Site Tools


호 형태의 점 배분하기

RhinoScript

Summary: 호 형태의 점을 배분하는 방법을 소개합니다.

질문

호 커브를 따라 균일하게 위치한 일련의 점이 있습니다. 이 점들이 호의 시작점과 끝점을 연결하는 선에 투영시키려고 합니다. 예:

수학적으로 할 수 있는 방법이 있습니까? 아니면, 투영이나 교차시키는 방법을 사용해야 합니까?

답변

다음의 스크립트 예를 참조하세요.

 Option Explicit
 
 Sub ArcPointDistribution
 
   ' Local variables
   Dim arc, cnt, rads
   Dim n_t(), n, i, a0, a1
   Dim line, dom, t
 
   ' Select arc curve  
   arc = Rhino.GetObject("Select arc", 4)
   If IsNull(arc) Then Exit Sub
   If Not Rhino.IsArc(arc) Then Exit Sub
 
   ' Get number of points to calculate
   cnt = Rhino.GetInteger("Number of points", 2)
   If IsNull(cnt) Then Exit Sub   
 
   rads = Rhino.ToRadians(Rhino.ArcAngle(arc))
   n = cnt - 1
   ReDim n_t(n)
 
   ' Calculate normalized parameters
   For i = 0 To n
     a0 = Sin(rads/2)
     a1 = Sin(i*rads/n - rads/2)
     n_t(i) = (a0+a1)/(2*a0)
   Next
 
   Rhino.EnableRedraw False
 
   line = Rhino.AddLine(Rhino.CurveStartPoint(arc), Rhino.CurveEndPoint(arc))
   dom = Rhino.CurveDomain(line)
 
   For i = 0 To n
     ' Convert normalized parameter to domain value
     t = (1.0 - n_t(i)) * dom(0) + n_t(i) * dom(1)
     Rhino.AddPoint Rhino.EvaluateCurve(line, t)
   Next
 
   'Rhino.DeleteObject line

   Rhino.EnableRedraw True
 
 End Sub
ko/developer/scriptsamples/arcpointdistribution.txt · Last modified: 2015/09/14 (external edit)