public static void CreateExtrudeBody() { msgScene scene = msgScene.GetScene(); scene.Clear(); Utils.AddFloorInScene(30.0, 25.0, -2.0, 0.0, -2.0); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl2 = msgSplineStruct.Create(); int fl = 0; for (double i = 0.0; i < 2.0 * 3.14159265; i += 0.13) { tmpPnt.x = ((double)(fl % 3 + 2)) * Math.Cos(i); tmpPnt.y = ((double)(fl % 3 + 2)) * Math.Sin(i); tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, fl); fl++; } spl2.Close(); msgSpline spl2_obj = msgSpline.Create(spl2); msgSplineStruct.Delete(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgCircleStruct cirGeo = new msgCircleStruct(); msgPointStruct cirC = new msgPointStruct(0.0, 0.0, 0.0); msgVectorStruct cirNor = new msgVectorStruct(0.0, 0.0, 1.0); cirGeo.FromCenterRadiusNormal(cirC, 1.6, cirNor); msg2DObject cir = msgCircle.Create(cirGeo); scene.AttachObject(cir); cir.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cir.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgVectorStruct extVec = new msgVectorStruct(1, -2, 5); msg3DObject exO = (msg3DObject)msgKinematic.Extrude(spl2_obj, new msg2DObject[] { cir }, extVec, true); scene.AttachObject(exO); exO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 30); msgVectorStruct transV1 = new msgVectorStruct(-7, 0, 0); exO.InitTempMatrix().Translate(transV1); exO.ApplyTempMatrix(); exO.DestroyTempMatrix(); }
public static void CreateRotationBody() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl2 = msgSplineStruct.Create(); int fl = 0; for (double i = 0.0; i < 2.0 * Math.PI; i += 0.4) { tmpPnt.x = ((double)(fl % 3 + 2)) * Math.Cos(i); tmpPnt.y = ((double)(fl % 3 + 2)) * Math.Sin(i); tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, fl); fl++; } spl2.Close(); msgSpline spl2_obj = msgSpline.Create(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgSplineStruct.Delete(spl2); msgPointStruct p1 = new msgPointStruct(10, 10, 0); msgPointStruct p2 = new msgPointStruct(20, 15, 0); msg3DObject rO = (msg3DObject)msgKinematic.Rotation(spl2_obj, p1, p2, 290, true); scene.AttachObject(rO); rO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 8); msgVectorStruct transV1 = new msgVectorStruct(-6, 0, 0); rO.InitTempMatrix().Translate(transV1); rO.ApplyTempMatrix(); rO.DestroyTempMatrix(); }
public static void CreateBodyFromClips() { msgScene scene = msgScene.GetScene(); scene.Clear(); Utils.AddFloorInScene(20.0, 20.0, 5.0, 2.0, -4.0); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl1 = msgSplineStruct.Create(); int fl = 0; for (double i = 0.0; i < 2.0 * 3.14159265; i += 0.4) { tmpPnt.x = ((double)(fl % 3 + 2)) * Math.Cos(i); tmpPnt.y = ((double)(fl % 3 + 2)) * Math.Sin(i); tmpPnt.z = 0.0; spl1.AddKnot(tmpPnt, fl); fl++; } spl1.Close(); msgSpline spl1_obj = msgSpline.Create(spl1); msgSplineStruct.Delete(spl1); scene.AttachObject(spl1_obj); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgSplineStruct spl2 = msgSplineStruct.Create(); tmpPnt.x = 0.0; tmpPnt.y = -0.9; tmpPnt.z = 2.0; spl2.AddKnot(tmpPnt, 0); tmpPnt.x = 1.4; tmpPnt.y = 0.9; tmpPnt.z = 2.0; spl2.AddKnot(tmpPnt, 1); tmpPnt.x = -1.6; tmpPnt.y = 0.6; tmpPnt.z = 2.0; spl2.AddKnot(tmpPnt, 2); tmpPnt.x = -1.2; tmpPnt.y = -1.6; tmpPnt.z = 2.0; spl2.AddKnot(tmpPnt, 3); spl2.Close(); msgSpline spl2_obj = msgSpline.Create(spl2); msgSplineStruct.Delete(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); scene.AttachObject(spl1_obj); scene.AttachObject(spl2_obj); msg2DObject[] ooo = new msg2DObject[3]; ooo[1] = spl1_obj; ooo[0] = spl2_obj; ooo[2] = (msg2DObject)spl2_obj.Clone(); scene.AttachObject(ooo[2]); msgPointStruct axeP = new msgPointStruct(0.0, 0.0, 0.0); msgVectorStruct axeD = new msgVectorStruct(0.0, 0.0, 1.0); axeD.z = 0.0; axeD.x = 1.0; ooo[2].InitTempMatrix().Rotate(axeP, axeD, Math.PI / 4.0); msgVectorStruct trV = new msgVectorStruct(-1.0, 1.0, -3.0); ooo[2].GetTempMatrix().Translate(trV); ooo[2].ApplyTempMatrix(); ooo[2].DestroyTempMatrix(); double[] ppp = new double[3]; ppp[0] = 0.1; ppp[1] = 0.0; ppp[2] = 0.2; msgObject lsf = msgSurfaces.SplineSurfaceFromSections(ooo, ppp, true); scene.AttachObject(lsf); lsf.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 23); msgVectorStruct transV1 = new msgVectorStruct(8, 0, 0); lsf.InitTempMatrix().Translate(transV1); lsf.ApplyTempMatrix(); lsf.DestroyTempMatrix(); }
public static void CreateFace() { msgScene scene = msgScene.GetScene(); scene.Clear(); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl2 = msgSplineStruct.Create(); tmpPnt.x = -1.0; tmpPnt.y = -3.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 0); tmpPnt.x = -3.0; tmpPnt.y = 0.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 1); tmpPnt.x = -1.0; tmpPnt.y = -1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 2); tmpPnt.x = 0.0; tmpPnt.y = 1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 3); tmpPnt.x = -1.0; tmpPnt.y = 4.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 4); tmpPnt.x = 3.0; tmpPnt.y = 1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 5); tmpPnt.x = 2.0; tmpPnt.y = -3.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 6); tmpPnt.x = 1.0; tmpPnt.y = -1.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 7); tmpPnt.x = 1.0; tmpPnt.y = -4.0; tmpPnt.z = 0.0; spl2.AddKnot(tmpPnt, 8); spl2.Close(); msgSpline spl2_obj = msgSpline.Create(spl2); msgSplineStruct.Delete(spl2); scene.AttachObject(spl2_obj); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); spl2_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); msg2DObject[] holes = new msg2DObject[3]; msgCircleStruct cirGeo = new msgCircleStruct(); msgPointStruct cirC = new msgPointStruct(0.8, 1.0, 0.0); msgVectorStruct cirNor = new msgVectorStruct(0.0, 0.0, 1.0); cirGeo.FromCenterRadiusNormal(cirC, 0.8, cirNor); holes[0] = msgCircle.Create(cirGeo); scene.AttachObject(holes[0]); holes[0].SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); holes[0].SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); cirC.x = 1.6; cirC.y = -1.0; cirGeo.FromCenterRadiusNormal(cirC, 0.2, cirNor); holes[1] = msgCircle.Create(cirGeo); scene.AttachObject(holes[1]); holes[1].SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); holes[1].SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); cirC.x = 0.0; cirC.y = -1.0; cirGeo.FromCenterRadiusNormal(cirC, 0.4, cirNor); holes[2] = msgCircle.Create(cirGeo); scene.AttachObject(holes[2]); holes[2].SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 0); holes[2].SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 1); msg3DObject fcO = (msg3DObject)msgSurfaces.Face(spl2_obj, holes); scene.AttachObject(fcO); fcO.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 50); msgVectorStruct transV1 = new msgVectorStruct(-5, 0, 0); fcO.InitTempMatrix().Translate(transV1); fcO.ApplyTempMatrix(); fcO.DestroyTempMatrix(); }
public static void CreateLinear() { msgScene scene = msgScene.GetScene(); scene.Clear(); Utils.AddFloorInScene(30.0, 30.0, 2.0, 5.0, -2.0); msgPointStruct tmpPnt = new msgPointStruct(); msgSplineStruct spl1 = msgSplineStruct.Create(); int fl = 0; for (double i = 0.0; i < 2.0 * 3.14159265; i += 0.4) { tmpPnt.x = ((double)(fl % 3 + 2)) * Math.Cos(i); tmpPnt.y = ((double)(fl % 3 + 2)) * Math.Sin(i); tmpPnt.z = 0.0; spl1.AddKnot(tmpPnt, fl); fl++; } spl1.Close(); msgSpline spl1_obj = msgSpline.Create(spl1); scene.AttachObject(spl1_obj); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); spl1_obj.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msgSplineStruct.Delete(spl1); msgCircleStruct cirGeo = new msgCircleStruct(); cirGeo.center.x = 2.0; cirGeo.center.y = -2.0; cirGeo.center.z = 8.0; cirGeo.normal.x = 0.0; cirGeo.normal.y = 0.0; cirGeo.normal.z = 1.0; cirGeo.radius = 1.5; msgCircle cir = msgCircle.Create(cirGeo); scene.AttachObject(cir); cir.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 12); cir.SetAttribute(msgObjectAttrEnum.SG_OA_LINE_THICKNESS, 2); msg3DObject linO1 = (msg3DObject)msgSurfaces.LinearSurfaceFromSections(spl1_obj, cir, 0.5f, false); scene.AttachObject(linO1); linO1.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 90); msgVectorStruct transV1 = new msgVectorStruct(0, 7, 0); linO1.InitTempMatrix().Translate(transV1); linO1.ApplyTempMatrix(); linO1.DestroyTempMatrix(); msg3DObject linO2 = (msg3DObject)msgSurfaces.LinearSurfaceFromSections(spl1_obj, cir, 0.7f, true); scene.AttachObject(linO2); linO2.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 150); transV1.x = 8.0; transV1.y = 0.0; linO2.InitTempMatrix().Translate(transV1); linO2.ApplyTempMatrix(); linO2.DestroyTempMatrix(); msg3DObject linO3 = (msg3DObject)msgSurfaces.LinearSurfaceFromSections(spl1_obj, cir, 0.3f, false); scene.AttachObject(linO3); linO3.SetAttribute(msgObjectAttrEnum.SG_OA_COLOR, 30); transV1.x = -8.0; transV1.y = 0.0; linO3.InitTempMatrix().Translate(transV1); linO3.ApplyTempMatrix(); linO3.DestroyTempMatrix(); }