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); }
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)); }
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); }
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); } } }