Exemplo n.º 1
0
 internal override void ApplyTransformation(com.epl.geometry.Transformation3D transform)
 {
     if (IsEmpty())
     {
         return;
     }
     _verifyAllStreams();
     AddAttribute(com.epl.geometry.VertexDescription.Semantics.Z);
     _verifyAllStreams();
     com.epl.geometry.AttributeStreamOfDbl points = (com.epl.geometry.AttributeStreamOfDbl)m_vertexAttributes[0];
     com.epl.geometry.AttributeStreamOfDbl zs     = (com.epl.geometry.AttributeStreamOfDbl)m_vertexAttributes[1];
     com.epl.geometry.Point3D pt3 = new com.epl.geometry.Point3D();
     for (int ipoint = 0; ipoint < m_pointCount; ipoint++)
     {
         pt3.x = points.Read(ipoint * 2);
         pt3.y = points.Read(ipoint * 2 + 1);
         pt3.z = zs.Read(ipoint);
         com.epl.geometry.Point3D res = transform.Transform(pt3);
         points.Write(ipoint * 2, res.x);
         points.Write(ipoint * 2 + 1, res.y);
         zs.Write(ipoint, res.z);
     }
     // REFACTOR: reset the exact envelope only and transform the loose
     // envelope
     NotifyModified(com.epl.geometry.MultiVertexGeometryImpl.DirtyFlags.DirtyCoordinates);
 }
Exemplo n.º 2
0
 internal override void ApplyTransformation(com.epl.geometry.Transformation3D transform)
 {
     if (IsEmptyImpl())
     {
         return;
     }
     AddAttribute(com.epl.geometry.VertexDescription.Semantics.Z);
     com.epl.geometry.Point3D pt = GetXYZ();
     SetXYZ(transform.Transform(pt));
 }
Exemplo n.º 3
0
 internal override void ApplyTransformation(com.epl.geometry.Transformation3D transform)
 {
     _touch();
     com.epl.geometry.Point3D pt = new com.epl.geometry.Point3D();
     pt.x     = m_xStart;
     pt.y     = m_yStart;
     pt.z     = _getAttributeAsDbl(0, com.epl.geometry.VertexDescription.Semantics.Z, 0);
     pt       = transform.Transform(pt);
     m_xStart = pt.x;
     m_yStart = pt.y;
     _setAttribute(0, com.epl.geometry.VertexDescription.Semantics.Z, 0, pt.z);
     pt.x   = m_xEnd;
     pt.y   = m_yEnd;
     pt.z   = _getAttributeAsDbl(1, com.epl.geometry.VertexDescription.Semantics.Z, 0);
     pt     = transform.Transform(pt);
     m_xEnd = pt.x;
     m_yEnd = pt.y;
     _setAttribute(1, com.epl.geometry.VertexDescription.Semantics.Z, 0, pt.z);
 }
Exemplo n.º 4
0
 internal override void ApplyTransformation(com.epl.geometry.Transformation3D transform)
 {
     _touch();
     if (!m_envelope.IsEmpty())
     {
         com.epl.geometry.Envelope3D env = new com.epl.geometry.Envelope3D();
         QueryEnvelope3D(env);
         if (env.IsEmptyZ())
         {
             env.SetEmpty();
         }
         else
         {
             // Z components is empty, the
             // AffineTransformation3D makes the whole
             // envelope empty. Consider
             // throwing an assert instead.
             transform.Transform(env);
         }
     }
 }