Exemple #1
0
        void project_vertex(int vID, IProjectionTarget targetIn)
        {
            Vector3d curpos    = mesh.GetVertex(vID);
            Vector3d projected = targetIn.Project(curpos, vID);

            mesh.SetVertex(vID, projected);
        }
Exemple #2
0
        public static void ProjectToTarget_Scene(IList <Vector3d> vertices, FScene scene, IProjectionTarget target)
        {
            int N = vertices.Count;

            for (int i = 0; i < N; ++i)
            {
                Vector3f v  = (Vector3f)vertices[i];
                Vector3f vW = SceneTransforms.SceneToWorldP(scene, v);
                vW          = (Vector3f)target.Project(vW);
                vertices[i] = SceneTransforms.WorldToSceneP(scene, vW);
            }
        }
 // used by collapse-edge to get projected position for new vertex
 Vector3d get_projected_collapse_position(int vid, Vector3d vNewPos)
 {
     if (constraints != null)
     {
         VertexConstraint vc = constraints.GetVertexConstraint(vid);
         if (vc.Target != null)
         {
             return(vc.Target.Project(vNewPos, vid));
         }
         if (vc.Fixed)
         {
             return(vNewPos);
         }
     }
     // no constraint applied, so if we have a target surface, project to that
     if (EnableInlineProjection && target != null)
     {
         return(target.Project(vNewPos, vid));
     }
     return(vNewPos);
 }