private void drawCircle(MultiVector circle, Color color) { MultiVector n, c; double r; IPNS.GetCircleParams(circle, out n, out c, out r); MultiVector rotAxis = MultiVector.CrossProduct(Basis.E3, n); double rotAngle = Math.Acos(n.E3); if (rotAxis == MultiVector.Zero) { rotAxis = Basis.E1; rotAngle = 0.0; } GL.Color3(color); GL.PushMatrix(); GL.Translate(c.E1, c.E2, c.E3); GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3); GL.Scale(r, r, r); drawModel(circleVbo); GL.PopMatrix(); }
private void drawPlane(MultiVector plane, Color color) { MultiVector n; double d; IPNS.GetPlaneParams(plane, out n, out d); MultiVector rotAxis = MultiVector.CrossProduct(Basis.E3, n); double rotAngle = Math.Acos(n.E3); if (rotAxis == MultiVector.Zero) { rotAxis = Basis.E1; rotAngle = 0.0; } GL.Color3(color); GL.PushMatrix(); GL.Translate(n.E1 * d, n.E2 * d, n.E3 * d); GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3); drawModel(planeVbo); GL.PopMatrix(); }
private void drawLine(MultiVector line, Color color) { MultiVector t, d; IPNS.GetLineParams(line, out t, out d); MultiVector rotAxis = MultiVector.CrossProduct(Basis.E3, d); double rotAngle = Math.Acos(d.E3); if (rotAxis == MultiVector.Zero) { rotAxis = Basis.E1; rotAngle = 0.0; } GL.Color3(color); GL.PushMatrix(); GL.Translate(t.E1, t.E2, t.E3); GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3); drawModel(lineVbo); GL.PopMatrix(); }
private void drawVector(MultiVector vector, Color color) { GL.Color3(color); MultiVector rotAxis = MultiVector.CrossProduct(Basis.E3, vector); double rotAngle = Math.Acos(vector.E3 / vector.Length);; if (rotAxis == MultiVector.Zero) { rotAxis = Basis.E1; rotAngle = 0.0; } double length = vector.Length; GL.PushMatrix(); GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3); GL.Scale(length, length, length); drawModel(vectorLineVbo); GL.PopMatrix(); GL.PushMatrix(); GL.Translate(vector.E1, vector.E2, vector.E3); GL.Rotate(MathHelper.RadiansToDegrees(rotAngle), rotAxis.E1, rotAxis.E2, rotAxis.E3); drawModel(vectorArrowVbo); GL.PopMatrix(); }