@Override public void drawSegment(Vec2 p1, Vec2 p2, Color3f color) { setStrokeColor(color); setFillColor(color); getWorldToScreenToOut(p1, tempVec1); getWorldToScreenToOut(p2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); }
@Override public void drawSolidCircle(Vec2 center, float radius, Vec2 axis, Color3f color) { setFillColor(color); setStrokeColor(color); // calculate the effective radius tempVec1.set(center.x + radius, center.y + radius); getWorldToScreenToOut(tempVec1, tempVec1); getWorldToScreenToOut(center, tempVec2); getWorldToScreenToOut(axis, tempVec3); canvas.fillCircle(tempVec2.x, tempVec2.y, tempVec1.x - tempVec2.x); canvas.strokeCircle(tempVec2.x, tempVec2.y, tempVec1.x - tempVec2.x); }
@Override public void drawCircle(Vec2 center, float radius, Color3f color) { setFillColor(color); setStrokeColor(color); // calculate the effective radius tempVec1.set(center.x + radius, center.y + radius); getWorldToScreenToOut(tempVec1, tempVec1); getWorldToScreenToOut(center, tempVec2); canvas.fillCircle(tempVec2.x, tempVec2.y, tempVec1.x - tempVec2.x); canvas.strokeCircle(tempVec2.x, tempVec2.y, tempVec1.x - tempVec2.x); }
@Override public void drawSegment(Vec2 p1, Vec2 p2, Color3f color) { if (canvas == null) { log().error(CANVASERROR); return; } setStrokeColor(color); setFillColor(color); getWorldToScreenToOut(p1, tempVec1); getWorldToScreenToOut(p2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); }
@Override public void drawSolidCircle(Vec2 center, float radius, Vec2 axis, Color3f color) { if (canvas == null) { log().error(CANVASERROR); return; } setFillColor(color); setStrokeColor(color); // calculate the effective radius tempVec1.set(center.x + radius, center.y + radius); getWorldToScreenToOut(tempVec1, tempVec1); getWorldToScreenToOut(center, tempVec2); getWorldToScreenToOut(axis, tempVec3); canvas.fillCircle(tempVec2.x, tempVec2.y, tempVec1.x - tempVec2.x); canvas.strokeCircle(tempVec2.x, tempVec2.y, tempVec1.x - tempVec2.x); }
@Override public void drawPoint(Vec2 argPoint, float argRadiusOnScreen, Color3f color) { setFillColor(color); setStrokeColor(color); getWorldToScreenToOut(argPoint, tempVec1); canvas.fillCircle(tempVec1.x, tempVec1.y, argRadiusOnScreen); }
@Override public void drawTransform(Transform xf) { getWorldToScreenToOut(xf.p, tempVec1); tempVec2.setZero(); // float k_axisScale = 0.4f; canvas.setStrokeColor(Color.rgb(1, 0, 0)); // note: violates strokeAlpha tempVec2.x = xf.p.x; // + k_axisScale * xf.R.m11; // Transform no longer scales tempVec2.y = xf.p.y; // + k_axisScale * xf.R.m12; getWorldToScreenToOut(tempVec2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); canvas.setStrokeColor(Color.rgb(0, 1, 0)); // note: violates strokeAlpha tempVec2.x = xf.p.x; // + k_axisScale * xf.R.m21; // Transform no longer scales tempVec2.y = xf.p.y; // + k_axisScale * xf.R.m22; getWorldToScreenToOut(tempVec2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); canvas.setStrokeColor(Color.argb(strokeAlpha, 1, 0, 0)); // restores strokeAlpha }
@Override public void drawCircle(Vec2 center, float radius, Color3f color) { if (canvas == null) { log().error(CANVASERROR); return; } setFillColor(color); setStrokeColor(color); // calculate the effective radius tempVec1.set(center.x + radius, center.y + radius); getWorldToScreenToOut(tempVec1, tempVec1); getWorldToScreenToOut(center, tempVec2); canvas.fillCircle(tempVec2.x, tempVec2.y, tempVec1.x - tempVec2.x); canvas.strokeCircle(tempVec2.x, tempVec2.y, tempVec1.x - tempVec2.x); }
@Override public void drawTransform(Transform xf) { if (canvas == null) { log().error(CANVASERROR); return; } getWorldToScreenToOut(xf.p, tempVec1); tempVec2.setZero(); // float k_axisScale = 0.4f; canvas.setStrokeColor(Color.rgb(1, 0, 0)); // note: violates strokeAlpha tempVec2.x = xf.p.x; // + k_axisScale * xf.R.m11; // Transform no longer scales tempVec2.y = xf.p.y; // + k_axisScale * xf.R.m12; getWorldToScreenToOut(tempVec2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); canvas.setStrokeColor(Color.rgb(0, 1, 0)); // note: violates strokeAlpha tempVec2.x = xf.p.x; // + k_axisScale * xf.R.m21; // Transform no longer scales tempVec2.y = xf.p.y; // + k_axisScale * xf.R.m22; getWorldToScreenToOut(tempVec2, tempVec2); canvas.drawLine(tempVec1.x, tempVec1.y, tempVec2.x, tempVec2.y); canvas.setStrokeColor(Color.argb(strokeAlpha, 1, 0, 0)); // restores strokeAlpha }
@Override public void drawPoint(Vec2 argPoint, float argRadiusOnScreen, Color3f color) { if (canvas == null) { log().error(CANVASERROR); return; } setFillColor(color); setStrokeColor(color); getWorldToScreenToOut(argPoint, tempVec1); canvas.fillCircle(tempVec1.x, tempVec1.y, argRadiusOnScreen); }
@Override public void drawSolidPolygon(Vec2[] vertices, int vertexCount, Color3f color) { setFillColor(color); setStrokeColor(color); Path path = canvas.createPath(); for (int i = 0; i < vertexCount; i++) { getWorldToScreenToOut(vertices[i], tempVec1); if (i == 0) { path.moveTo(tempVec1.x, tempVec1.y); } else { path.lineTo(tempVec1.x, tempVec1.y); } } path.close(); canvas.fillPath(path); canvas.strokePath(path); }
@Override public void drawSolidPolygon(Vec2[] vertices, int vertexCount, Color3f color) { if (canvas == null) { log().error(CANVASERROR); return; } setFillColor(color); setStrokeColor(color); Path path = canvas.createPath(); for (int i = 0; i < vertexCount; i++) { getWorldToScreenToOut(vertices[i], tempVec1); if (i == 0) { path.moveTo(tempVec1.x, tempVec1.y); } else { path.lineTo(tempVec1.x, tempVec1.y); } } path.close(); canvas.fillPath(path); canvas.strokePath(path); }