@@ -52,6 +52,7 @@ public static PolyCurve SimplifyCameraFieldOfView(this PolyCurve cameraFieldOfVi
52
52
53
53
//convert to polyline and simplify
54
54
List < Line > cameraLines = new List < Line > ( ) ;
55
+
55
56
foreach ( ICurve curve in cameraFieldOfView . SubParts ( ) )
56
57
{
57
58
if ( curve is Line )
@@ -62,6 +63,7 @@ public static PolyCurve SimplifyCameraFieldOfView(this PolyCurve cameraFieldOfVi
62
63
cameraLines . Add ( line ) ;
63
64
}
64
65
}
66
+
65
67
Polyline cameraPolyline = Geometry . Create . Polyline ( cameraLines ) ;
66
68
cameraPolyline = cameraPolyline . Simplify ( distanceTolerance , angleTolerance ) ;
67
69
@@ -82,12 +84,17 @@ public static PolyCurve SimplifyCameraFieldOfView(this PolyCurve cameraFieldOfVi
82
84
double p2Param = coneArc . ParameterAtPoint ( endPoint , distanceTolerance ) ;
83
85
double p3Param = ( p1Param + p2Param ) / 2 ;
84
86
Point pt3 = coneArc . PointAtParameter ( p3Param ) ;
87
+
85
88
if ( ! cameraFieldOfView . IsContaining ( new List < Point > ( ) { pt3 } , true , distanceTolerance ) )
86
89
{
87
90
simplifiedPolyCurve . Curves . Add ( line ) ;
88
91
continue ;
89
92
}
90
- Arc newArc = BH . Engine . Geometry . Create . Arc ( startPoint , pt3 , endPoint , distanceTolerance ) ;
93
+
94
+ double startAngle = coneArc . EndAngle * p1Param ;
95
+ double endAngle = coneArc . EndAngle * p2Param ;
96
+ Arc newArc = Geometry . Create . Arc ( coneArc . CoordinateSystem , coneArc . Radius , startAngle , endAngle ) ;
97
+
91
98
simplifiedPolyCurve . Curves . Add ( newArc ) ;
92
99
}
93
100
else
0 commit comments