Exemple #1
0
        public override string exportX3D(Scientrace.Object3dEnvironment env)
        {
            System.Text.StringBuilder retx3d = new System.Text.StringBuilder("<!-- SPHERE GRID start -->", 10000);

            Scientrace.Location     tNodeLoc;
            Scientrace.Location     tMerConnectLoc;
            Scientrace.Location     tLatConnectLoc;
            Scientrace.X3DGridPoint tGridPoint;

            for (int ic = 0; ic <= this.x3d_circles_of_latitude; ic++)    //0-pi
            {
                for (int im = 0; im < this.x3d_meridians; im++)           //0-2pi

                {
                    tNodeLoc       = this.getNodeLoc(ic, im);
                    tMerConnectLoc =
                        (ic > 0 && ic < this.x3d_meridians) ?                 // do not connect "points" located at north and south pole
                        this.getNodeLoc(ic, (im + 1) % this.x3d_meridians)
                                                : null;
                    tLatConnectLoc = this.getNodeLoc(ic + 1, im);

                    // a gridpoint has a location and two neighbour location to which to connect to
                    tGridPoint = new Scientrace.X3DGridPoint(env, tNodeLoc,
                                                             tMerConnectLoc, tLatConnectLoc);
                    retx3d.AppendLine(tGridPoint.exportX3DnosphereRGBA("0.4 0.8 0 1"));
                }
            }
            retx3d.Append("<!-- Sphere grid end -->");
            return(retx3d.ToString());
        }         //end string exportX3D(env)
Exemple #2
0
        public override string exportX3D(Scientrace.Object3dEnvironment env)
        {
            Scientrace.Location h1 = this.planoCenterLoc();
            double r = this.sphereRadius;
            double x = this.getLensRadius();
            double lensRadians = Math.Asin(x/r);

            NonzeroVector baseVecZ = this.lensPlane.getNormal();
            NonzeroVector baseVec1 = null;
            NonzeroVector baseVec2 = null;
            baseVecZ.fillOrtogonalVectors(ref baseVec1, ref baseVec2);

            double lat_circles = 3;
            double meridians = 12;

            System.Text.StringBuilder retx3d = new System.Text.StringBuilder("<!-- PLANOCONVEXLENS GRID start -->", 1024);
            retx3d.Append("\t<!-- Plano part -->" );

            Scientrace.Location tNodeLoc;
            Scientrace.Location tMerConnectLoc;
            Scientrace.Location tLatConnectLoc;
            Scientrace.X3DGridPoint tGridPoint;
            double pi2 = Math.PI*2;

            for (double iPlaneCircle = lat_circles; iPlaneCircle > 0; iPlaneCircle--) {
            for (double iPlaneMerid = 0; iPlaneMerid < meridians; iPlaneMerid++) {
                tNodeLoc = this.constructPlaneNodeLoc(h1,
                            x*iPlaneCircle/lat_circles, pi2*iPlaneMerid/meridians,
                            baseVec1, baseVec2);
                tMerConnectLoc = this.constructPlaneNodeLoc(h1,
                            x*iPlaneCircle/lat_circles, pi2*(iPlaneMerid+1)/meridians,
                            baseVec1, baseVec2);
                tLatConnectLoc = this.constructPlaneNodeLoc(h1,
                            x*(iPlaneCircle-1)/lat_circles, pi2*iPlaneMerid/meridians,
                            baseVec1, baseVec2);
                tGridPoint = new Scientrace.X3DGridPoint(env, tNodeLoc, tMerConnectLoc, tLatConnectLoc);
                retx3d.AppendLine(tGridPoint.exportX3DnosphereRGBA("0.4 0 0.2 1"));
                }} //end for iPlaneCircles / iPlaneMerid

            retx3d.Append("\t<!-- End of plano part -->" );
            retx3d.Append("\t<!-- Convex part -->" );

            for (double iSphereCircle = 2*lat_circles; iSphereCircle > 0; iSphereCircle--) {
            for (double iSphereMerid = 0.5; iSphereMerid < 2*meridians; iSphereMerid++) {
                //double lat_angle = lensRadians * (iSphereCircle / lat_circles); // theta
                //double mer_angle = pi2 * (iSphereMerid/meridians); // mer_angle = phi
                tNodeLoc = this.constructSphereNodeLoc(
                        lensRadians * (iSphereCircle / (2*lat_circles)), // lat_angle = theta
                        pi2 * (iSphereMerid/(2*meridians)), // mer_angle = phi
                        baseVec1, baseVec2, baseVecZ);
                tMerConnectLoc = this.constructSphereNodeLoc(
                        lensRadians * (iSphereCircle / (2*lat_circles)), // lat_angle = theta
                        pi2 * ((iSphereMerid+1)/(2*meridians)), // mer_angle = phi
                        baseVec1, baseVec2, baseVecZ);
                tLatConnectLoc = this.constructSphereNodeLoc(
                        lensRadians * ((iSphereCircle-1) / (2*lat_circles)), // lat_angle = theta
                        pi2 * (iSphereMerid/(2*meridians)), // mer_angle = phi
                        baseVec1, baseVec2, baseVecZ);
                tGridPoint = new Scientrace.X3DGridPoint(env, tNodeLoc, tMerConnectLoc, tLatConnectLoc);
                retx3d.AppendLine(tGridPoint.exportX3DnosphereRGBA("0.2 0 0.4 1"));
                }} // end for iSphereCircle / iSphereMerid

                                                                                                                        retx3d.Append("\t<!-- Convex part -->" );
            retx3d.Append("\t<!-- End of Convex part -->" );
            retx3d.Append("<!-- End of PLANOCONVEXLENS GRID -->");
            return retx3d.ToString();
        }
Exemple #3
0
        public override string exportX3D(Scientrace.Object3dEnvironment env)
        {
            Scientrace.Location h1 = this.planoCenterLoc();
            double r           = this.sphereRadius;
            double x           = this.getLensRadius();
            double lensRadians = Math.Asin(x / r);

            NonzeroVector baseVecZ = this.lensPlane.getNormal();
            NonzeroVector baseVec1 = null;
            NonzeroVector baseVec2 = null;

            baseVecZ.fillOrtogonalVectors(ref baseVec1, ref baseVec2);

            double lat_circles = 3;
            double meridians   = 12;

            System.Text.StringBuilder retx3d = new System.Text.StringBuilder("<!-- PLANOCONVEXLENS GRID start -->", 1024);
            retx3d.Append("\t<!-- Plano part -->");


            Scientrace.Location     tNodeLoc;
            Scientrace.Location     tMerConnectLoc;
            Scientrace.Location     tLatConnectLoc;
            Scientrace.X3DGridPoint tGridPoint;
            double pi2 = Math.PI * 2;

            for (double iPlaneCircle = lat_circles; iPlaneCircle > 0; iPlaneCircle--)
            {
                for (double iPlaneMerid = 0; iPlaneMerid < meridians; iPlaneMerid++)
                {
                    tNodeLoc = this.constructPlaneNodeLoc(h1,
                                                          x * iPlaneCircle / lat_circles, pi2 * iPlaneMerid / meridians,
                                                          baseVec1, baseVec2);
                    tMerConnectLoc = this.constructPlaneNodeLoc(h1,
                                                                x * iPlaneCircle / lat_circles, pi2 * (iPlaneMerid + 1) / meridians,
                                                                baseVec1, baseVec2);
                    tLatConnectLoc = this.constructPlaneNodeLoc(h1,
                                                                x * (iPlaneCircle - 1) / lat_circles, pi2 * iPlaneMerid / meridians,
                                                                baseVec1, baseVec2);
                    tGridPoint = new Scientrace.X3DGridPoint(env, tNodeLoc, tMerConnectLoc, tLatConnectLoc);
                    retx3d.AppendLine(tGridPoint.exportX3DnosphereRGBA("0.4 0 0.2 1"));
                }
            }                      //end for iPlaneCircles / iPlaneMerid

            retx3d.Append("\t<!-- End of plano part -->");
            retx3d.Append("\t<!-- Convex part -->");

            for (double iSphereCircle = 2 * lat_circles; iSphereCircle > 0; iSphereCircle--)
            {
                for (double iSphereMerid = 0.5; iSphereMerid < 2 * meridians; iSphereMerid++)
                {
                    //double lat_angle = lensRadians * (iSphereCircle / lat_circles); // theta
                    //double mer_angle = pi2 * (iSphereMerid/meridians); // mer_angle = phi
                    tNodeLoc = this.constructSphereNodeLoc(
                        lensRadians * (iSphereCircle / (2 * lat_circles)),          // lat_angle = theta
                        pi2 * (iSphereMerid / (2 * meridians)),                     // mer_angle = phi
                        baseVec1, baseVec2, baseVecZ);
                    tMerConnectLoc = this.constructSphereNodeLoc(
                        lensRadians * (iSphereCircle / (2 * lat_circles)),              // lat_angle = theta
                        pi2 * ((iSphereMerid + 1) / (2 * meridians)),                   // mer_angle = phi
                        baseVec1, baseVec2, baseVecZ);
                    tLatConnectLoc = this.constructSphereNodeLoc(
                        lensRadians * ((iSphereCircle - 1) / (2 * lat_circles)),    // lat_angle = theta
                        pi2 * (iSphereMerid / (2 * meridians)),                     // mer_angle = phi
                        baseVec1, baseVec2, baseVecZ);
                    tGridPoint = new Scientrace.X3DGridPoint(env, tNodeLoc, tMerConnectLoc, tLatConnectLoc);
                    retx3d.AppendLine(tGridPoint.exportX3DnosphereRGBA("0.2 0 0.4 1"));
                }
            }                      // end for iSphereCircle / iSphereMerid

            retx3d.Append("\t<!-- Convex part -->");
            retx3d.Append("\t<!-- End of Convex part -->");
            retx3d.Append("<!-- End of PLANOCONVEXLENS GRID -->");
            return(retx3d.ToString());
        }         //end string exportX3D(env)
Exemple #4
0
        public override string exportX3D(Scientrace.Object3dEnvironment env)
        {
            System.Text.StringBuilder retx3d = new System.Text.StringBuilder("<!-- SPHERE GRID start -->", 10000);

            Scientrace.Location tNodeLoc;
            Scientrace.Location tMerConnectLoc;
            Scientrace.Location tLatConnectLoc;
            Scientrace.X3DGridPoint tGridPoint;

            for (int ic = 0; ic <= this.x3d_circles_of_latitude; ic++) { //0-pi
            for (int im = 0; im < this.x3d_meridians; im++) { //0-2pi

                tNodeLoc = this.getNodeLoc(ic, im);
                tMerConnectLoc =
                    (ic > 0 && ic < this.x3d_meridians) ? // do not connect "points" located at north and south pole
                        this.getNodeLoc(ic, (im+1)%this.x3d_meridians)
                        : null;
                tLatConnectLoc = this.getNodeLoc(ic+1, im);

                // a gridpoint has a location and two neighbour location to which to connect to
                tGridPoint = new Scientrace.X3DGridPoint(env, tNodeLoc,
                    tMerConnectLoc, tLatConnectLoc);
                retx3d.AppendLine(tGridPoint.exportX3DnosphereRGBA("0.4 0.8 0 1"));
                }}
            retx3d.Append("<!-- Sphere grid end -->");
            return retx3d.ToString();
        }