{"id":13645470,"url":"https://github.com/FabianTerhorst/Isometric","last_synced_at":"2025-04-21T14:31:14.814Z","repository":{"id":37752248,"uuid":"87078484","full_name":"FabianTerhorst/Isometric","owner":"FabianTerhorst","description":"Isometric drawing library for Android","archived":false,"fork":false,"pushed_at":"2019-04-20T04:45:26.000Z","size":819,"stargazers_count":1131,"open_issues_count":14,"forks_count":129,"subscribers_count":34,"default_branch":"master","last_synced_at":"2024-10-30T02:36:35.329Z","etag":null,"topics":["android","isometric","view"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FabianTerhorst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-03T13:41:08.000Z","updated_at":"2024-09-03T03:02:55.000Z","dependencies_parsed_at":"2022-07-20T00:34:27.558Z","dependency_job_id":null,"html_url":"https://github.com/FabianTerhorst/Isometric","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FabianTerhorst%2FIsometric","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FabianTerhorst%2FIsometric/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FabianTerhorst%2FIsometric/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FabianTerhorst%2FIsometric/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FabianTerhorst","download_url":"https://codeload.github.com/FabianTerhorst/Isometric/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223237955,"owners_count":17111355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","isometric","view"],"created_at":"2024-08-02T01:02:35.637Z","updated_at":"2024-11-09T18:31:30.321Z","avatar_url":"https://github.com/FabianTerhorst.png","language":"Java","funding_links":["http://paypal.me/fabianterhorst"],"categories":["其他"],"sub_categories":[],"readme":"# Isometric\nIsometric drawing library for Android\n\n### Drawing a simple cube\n\n```java\nisometricView.add(\n\tnew Prism(\n\t\tnew Point(/* x */ 0, /* y */ 0, /* z */ 0), \n\t\t/* width */ 1, /* length */ 1, /* height */ 1\n\t), \n\tnew Color(33, 150, 243)\n);\n```\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotOne.png?raw=true)\n\n### Drawing multiple Shapes\n#### There are 3 basic components: points, paths and shapes. A shape needs an origin point and 3 measurements for the x, y and z axes. The default Prism constructor is setting all measurements to 1.\n\n```java\nisometricView.add(new Prism(new Point(0, 0, 0)), new Color(33, 150, 243));\nisometricView.add(new Prism(new Point(-1, 1, 0), 1, 2, 1), new Color(33, 150, 243));\nisometricView.add(new Prism(new Point(1, -1, 0), 2, 1, 1), new Color(33, 150, 243));\n```\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotTwo.png?raw=true)\n\n### Drawing multiple Paths\n#### Paths are two dimensional. You can draw and color paths the same as shapes.\n\n```java\nisometricView.add(new Prism(Point.ORIGIN, 3, 3, 1), new Color(50, 60, 160));\nisometricView.add(new Path(new Point[]{\n    new Point(1, 1, 1),\n    new Point(2, 1, 1),\n    new Point(2, 2, 1),\n    new Point(1, 2, 1)\n}), new Color(50, 160, 60));\n```\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotPath.png?raw=true)\n\n### The grid\n#### Here you can see how the grid looks like. The blue grid is the xy-plane. The z-line is the z-axis.\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotGrid.png?raw=true)\n\n### Supports complex structures\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotThree.png?raw=true)\n\n# Include in your project\n## Using JCenter\n```groovy\ncompile 'io.fabianterhorst:Isometric:0.0.9'\n```\n\n### Available Shapes\n#### [Cylinder](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Cylinder.java), [Knot](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Knot.java), [Octahedron](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Octahedron.java), [Prism](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Prism.java), [Pyramid](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Pyramid.java) and [Stairs](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Stairs.java)\n\n### Translate\n#### Traslate is translating an point, path or shape to the given x, y and z distance. Translate is returning a new point, path or shape.\n\n```java\nPrism prism = new Prism(new Point(0, 0, 0));\nisometricView.add(prism, new Color(33, 150, 243));\nisometricView.add(prism.translate(0, 0, 1.1), new Color(33, 150, 243));\n```\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotTranslate.png?raw=true)\n\n### Scale\n#### Scale is scaling an point, path or shape with the given x, y and z scaling factors. Scale is returning a new point, path or shape.\n\n```java\nColor blue = new Color(50, 60, 160);\nColor red = new Color(160, 60, 50);\nPrism cube = new Prism(Point.ORIGIN);\nisometricView.add(cube.scale(Point.ORIGIN, 3.0, 3.0, 0.5), red);\nisometricView.add(cube\n\t.scale(Point.ORIGIN, 3.0, 3.0, 0.5)\n\t.translate(0, 0, 0.6), blue);\n```\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotScale.png?raw=true)\n\n### RotateZ\n#### RotateZ is rotating an point, path or shape with the given angle in radians on the xy-plane (where an angle of 0 runs along the position x-axis). RotateZ is returning a new point, path or shape.\n\n```java\nColor blue = new Color(50, 60, 160);\nColor red = new Color(160, 60, 50);\nPrism cube = new Prism(Point.ORIGIN, 3, 3, 1);\nisometricView.add(cube, red);\nisometricView.add(cube\n\t/* (1.5, 1.5) is the center of the prism */\n\t.rotateZ(new Point(1.5, 1.5, 0), Math.PI / 12)\n\t.translate(0, 0, 1.1), blue);\n```\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotRotateZ.png?raw=true)\n\n### Shapes from Paths\n#### The method ```Shape.extrude``` allows you to create a 3D model by popping out a 2D path along the z-axis.\n\n```java\nColor blue = new Color(50, 60, 160);\nColor red = new Color(160, 60, 50);\nisometricView.add(new Prism(Point.ORIGIN, 3, 3, 1), blue);\nisometricView.add(Shape.extrude(new Path(new Point[]{\n\tnew Point(1, 1, 1),\n\tnew Point(2, 1, 1),\n\tnew Point(2, 3, 1)\n}), 0.3), red);\n```\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotExtrude.png?raw=true)\n\n### Available Shapes\n#### [Cylinder](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Cylinder.java)\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotCylinder.png?raw=true)\n\n[Knot](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Knot.java)\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotKnot.png?raw=true)\n\n[Octahedron](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Octahedron.java)\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotOctahedron.png?raw=true)\n\n[Prism](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Prism.java)\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotPrism.png?raw=true)\n\n[Pyramid](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Pyramid.java) \n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotPyramid.png?raw=true)\n\n[Stairs](https://github.com/FabianTerhorst/Isometric/blob/master/lib/src/main/java/io/fabianterhorst/isometric/shapes/Stairs.java)\n\n![Image](https://github.com/FabianTerhorst/Isometric/blob/master/lib/screenshots/io.fabianterhorst.isometric.screenshot.IsometricViewTest_doScreenshotStairs.png?raw=true)\n\n# Developed By\n\n* Fabian Terhorst\n  * [github.com/FabianTerhorst](https://github.com/FabianTerhorst) - \u003cfabian.terhorst@gmail.com\u003e\n  * [paypal.me/fabianterhorst](http://paypal.me/fabianterhorst)\n\n\n# Contributors\n\n* **[cameronwhite08](https://github.com/cameronwhite08)**\n\n\n# License\n\n    Copyright 2017 Fabian Terhorst\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFabianTerhorst%2FIsometric","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFabianTerhorst%2FIsometric","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFabianTerhorst%2FIsometric/lists"}