# Isometric **Repository Path**: HarmonyOS-tpc/Isometric ## Basic Information - **Project Name**: Isometric - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-17 - **Last Updated**: 2023-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Isometric Isometric drawing library for Harmony Isometric is a drawing library. There are 3 basic components: points, paths and shapes. A shape needs an origin point and 3 measurements for the x, y and z axis. ## Isometric includes : This list properly implements many features which are missing from other implementations. These are 1. Draw Prism and give color 2. Draw Stairs and give color 3. Draw Pyramid and give color 4. Draw Octahedron and give color 5. Draw Cylinder and give color 6. Draw Knot and give color 7. Implement Translate functionality 8. Implement Scale functionality 9. Implement Rotate functionality 10.Implement Extrude functionality # Usage Instructions ## Example ```xml ``` Extend your Component in a way that it implements IsometricView , in addition to what it already implements. ``` isometricView = (IsometricView) container.findComponentById(ResourceTable.Id_isometricView); ``` ## Drawing a simple cube ``` isometricView.add( new Prism( new Point(/* x */ 0, /* y */ 0, /* z */ 0), /* width */ 1, /* length */ 1, /* height */ 1 ), new Color(33, 150, 243) ); ``` ## Drawing multiple Shapes 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. ``` isometricView.add(new Prism(new Point(0, 0, 0)), new Color(33, 150, 243)); isometricView.add(new Prism(new Point(-1, 1, 0), 1, 2, 1), new Color(33, 150, 243)); isometricView.add(new Prism(new Point(1, -1, 0), 2, 1, 1), new Color(33, 150, 243)); ``` ## Drawing multiple Paths Paths are two dimensional. You can draw and color paths the same as shapes. ``` isometricView.add(new Prism(Point.ORIGIN, 3, 3, 1), new Color(50, 60, 160)); isometricView.add(new Path(new Point[]{ new Point(1, 1, 1), new Point(2, 1, 1), new Point(2, 2, 1), new Point(1, 2, 1) }), new Color(50, 160, 60)); ``` # Include in your project ## Using JCenter ``` compile 'io.fabianterhorst:Isometric:0.0.9' ``` # Available Shapes Cylinder, Knot, Octahedron, Prism, Pyramid and Stairs ## Translate 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. ``` Prism prism = new Prism(new Point(0, 0, 0)); isometricView.add(prism, new Color(33, 150, 243)); isometricView.add(prism.translate(0, 0, 1.1), new Color(33, 150, 243)); ``` ## Scale 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. ``` Color blue = new Color(50, 60, 160); Color red = new Color(160, 60, 50); Prism cube = new Prism(Point.ORIGIN); isometricView.add(cube.scale(Point.ORIGIN, 3.0, 3.0, 0.5), red); isometricView.add(cube .scale(Point.ORIGIN, 3.0, 3.0, 0.5) .translate(0, 0, 0.6), blue); ``` ## RotateZ 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. ``` Color blue = new Color(50, 60, 160); Color red = new Color(160, 60, 50); Prism cube = new Prism(Point.ORIGIN, 3, 3, 1); isometricView.add(cube, red); isometricView.add(cube /* (1.5, 1.5) is the center of the prism */ .rotateZ(new Point(1.5, 1.5, 0), Math.PI / 12) .translate(0, 0, 1.1), blue); ``` ## Shapes from Paths The method Shape.extrude allows you to create a 3D model by popping out a 2D path along the z-axis. ``` Color blue = new Color(50, 60, 160); Color red = new Color(160, 60, 50); isometricView.add(new Prism(Point.ORIGIN, 3, 3, 1), blue); isometricView.add(Shape.extrude(new Path(new Point[]{ new Point(1, 1, 1), new Point(2, 1, 1), new Point(2, 3, 1) }), 0.3), red); ``` # Installation tutorial ## Library Dependencies 1. For using Isometric modules in your sample application, add below dependencies to generate hap/har: Modify entry build.gradle as below : ``` dependencies { implementation fileTree(dir: 'libs', include: ['*.jar','*.har']) compile project(path: ':library') } ``` 2. For using Isometric in separate application, add the below dependencies and include "library.har" in libs folder of "entry" module : Modify entry build.gradle as below : ``` dependencies { implementation fileTree(dir: 'libs', include: ['*.har']) } ``` 3. For using Isometric library from a remote repository in separate application, add the below dependency in entry/build.gradle file : Modify entry build.gradle as below : ``` dependencies { implementation 'io.openharmony.tpc.thirdlib:Isometric:1.0.0' } ``` #License ``` Copyright 2017 Fabian Terhorst Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ```