함께 만드는 별빛 세상, 천문노트 · Since 2001

점찍기를 사용한 캐드 삼차원 지도 작업의 소스코드

이수욱 2004-10-29 (금) 22:22 9038 1
목록
이전글 다음글

웹 아카이브(2020-09-29 기록)에서 복원한 글입니다.

오토캐드를 이용한 별지도를 만드는 중입니다
이것은 단순히 2차원적인 지도가 아니라 3차원입체 우주지도입니다
캐드상에 점을찍어서 140억광년까지 점을 찍어서 점찍기가 완성되어
캐드를 사용해서 위에서 옆에서 아래에서 모든각도에서 볼수가 입습니다
하지만 현재 프래그램 컴파일이 캐드내장프로그램인 베이직에 계속버그가 생겨서
수작업으로 가까운 별과 밝은별을 완성했습니다
누가 이글을 보면 다음의 두개의 소스코드는 캐드상의 베이직으로 짠것입니다
소스코드를 실행하고, 경위도 데이타 입력은 다시 짜야합니다


Sub polarpnt()
Dim polarpnt As Variant
Dim basepnt(0 To 2) As Double
Dim angle1 As Double
Dim angle2 As Double
Dim point0bj As AcadPoint
Dim distance As Variant
basepnt(0) = 0#: basepnt(1) = 0#: basepnt(2) = 0#
pi = 3.141592
angle1 = 60 * pi / 180#
angle2 = 30 * pi / 180#
distance = 100
polarpnt = ThisDrawing.Utility.PolarPoint(basepnt, angle1, distance)

Set point0bj = ThisDrawing.ModelSpace.AddPoint(polarpnt)
Dim distance2 As Variant
distance2 = distance - distance * Cos(angle2)
point0bj.Move distance, distance2
point0bj.Elevation = Sin(angle2)

End Sub

<3d 회전을 이용한 점찍기 소스코드:>
Sub polarpnt()
Dim polarpnt As Variant
Dim basepnt(0 To 2) As Variant
Dim point0bj As AcadPoint
Dim angle As Double
Dim distance As Double
basepnt(0) = 0#: basepnt(1) = 0#: basepnt(2) = 0#
pi=3.141592
angle=60
angle = angle*pi/180#
distance = 100
polarpnt = ThisDrawing.Utility.PolarPoint(basepnt, angle, distance)
Set point0bj = ThisDrawing.ModelSpace.AddPoint(polarpnt)

\' Change the viewing direction of the viewport
Dim NewDirection(0 To 2) As Double
NewDirection(0) = -1: NewDirection(1) = -1: NewDirection(2) = 1
ThisDrawing.ActiveViewport.direction = NewDirection

ThisDrawing.ActiveViewport = ThisDrawing.ActiveViewport
ThisDrawing.Regen True

\'3d angle transferring condition
dim c as double
If angle <= 0.5*pi Then<br /> A = 0.5*pi - angle
B = 0.5*pi - A
C = angle + A + B
ElseIf angle <= pi Then<br /> A = pi - angle
B = 0.5*pi - A
C = angle + A + B
ElseIf angle <= 1.5*pi Then<br /> A = 1.5*pi - angle
B = 0.5*pi - A
C = angle + A + B
ElseIf angle <= 2*pi Then<br /> A = 2*pi - angle
B = 0.5*pi - A
C = angle + A + B
End If
Dim axixpnt As Variant
\'define the rotation axis with point

axispnt = ThisDrawing.Utility.PolarPoint(basepnt, C, distance)
set point0bj=thisdrawing.modelspace.polarpoint(axispnt)
basepnt(0) = 0#: basepnt(1) = 0#: basepnt(2) = 0#
basepnt2 = axispnt
Set axisline = ThisDrawing.ModelSpace.AddLine(basepnt, basepnt2)

point0bj.Rotate3d basepnt, basepnt2, angle
ThisDrawing.Regen True

End Sub

댓글 1

지용호2005-12-15 00:00

캐드도 이런 소스코드를 넣을 수 있군요.
신기신기... ^^ 베이직이네~

로그인하면 댓글을 쓸 수 있습니다.

무료 천문 라이브러리 - MatriXs

총 103건
번호제목글쓴이날짜조회
공지 MatriXsLib 1.0+7 이형철06-1523806
102 MatriXsLib 1.0+7 이형철06-1523806
101 안녕들하세요~^^+1 이도원06-228250
98 이렇게 좋은 소스가..^^+2 황태욱01-077883
97 요즘 다들 머하시나요?+5 이도원12-107669
96 c 를 공부하다가+5 이도원11-137295
95 Astronomical Algorithm..+4 김창환10-317665
94 침체기 같네요...+3 이도원09-227006
글쓰기