GeOnDT GeOnDT for JS

Class: U3dCylinder

U3dCylinder

~extends U3dGeometry
3D 원기둥(Cylinder) 객체를 생성·관리하는 클래스입니다.
윗면/밑면 반지름과 높이로 원기둥·원뿔대·원뿔을 만들고, 재질 타입(basic/topimage/standard)과 외곽선(edge)을 지정할 수 있습니다. 좌표는 생성 후 setVertex(월드 좌표) 또는 setPositions(위경도)로 지정하며, 첫 번째 좌표에 원기둥이 놓입니다. setVertex는 바로 반영되고, setPositions로 준 위경도는 도형이 속한 레이어가 월드 좌표로 바꿔 넣는 시점에 반영됩니다.

원기둥의 축은 Y 방향으로 만들어집니다. 지도는 Z가 높이인 좌표계를 쓰므로 그대로 두면 눕고, 지면에 세우려면 X축으로 90도(Math.PI / 2) 돌립니다. 지오메트리 자체를 돌리려면 setRotateXFromGeometry를, 도형 객체를 돌리려면 setRotation을 사용합니다.

new U3dCylinder(opt)

생성 옵션으로 원기둥(Cylinder)을 생성합니다.
윗면/밑면 반지름과 높이로 원기둥을 만들고, 재질 타입(basic 단색 / topimage 윗면 이미지 / standard 표준 재질), 외곽선(edge) 등을 함께 지정할 수 있습니다. 재질 타입과 윗면 이미지는 이 시점에만 반영되며 이후 setParam으로는 바꿀 수 없습니다.

Name Type Default Description
opt U3dCylinderCO {} optional

원기둥(Cylinder) 생성 옵션 (반지름·높이·재질 타입·외곽선 등)

Members

edgeboolean

외곽선(테두리 선)을 표시하는지 여부입니다.
켜면 면과 면이 만나는 모서리를 선으로 덧그려 형태를 또렷하게 보여줍니다. 선 색은 lineColor로 정하며 기본은 검정입니다. 표시 여부는 setParam({outline: ...})으로 바꾸며, 이때 외곽선이 다시 만들어집니다.

heightnumber

축 방향 길이입니다. (미터)
축을 지도의 높이 방향으로 세우면 이 값이 눈에 보이는 높이가 됩니다.

radialSegmentsnumber

원둘레를 나누는 면의 수입니다.
클수록 단면이 원에 가까워지고 정점 수가 늘어납니다.

radiusBottomnumber

밑면 원의 반지름입니다. (미터)
윗면과 값이 다르면 원뿔대가 되고, 한쪽이 0이면 원뿔이 됩니다.

radiusTopnumber

윗면 원의 반지름입니다. (미터)
위경도 좌표를 지정한 원기둥은 화면에 그릴 때 그 위도의 보정 배율이 곱해집니다.

Methods

getParam()U3dCylinderParam

원기둥(Cylinder)의 현재 속성을 반환합니다. (setParam과 짝을 이룹니다)
원기둥 고유 속성과 함께 색상·투명도 같은 도형 공통 속성도 담기므로, 반환값을 다른 원기둥의 setParam에 그대로 넘기면 같은 형태로 맞출 수 있습니다. 호출할 때마다 새 객체를 만들어 돌려주며, 이 객체를 고쳐도 원기둥은 바뀌지 않습니다.

생성 옵션이나 setParam에서 한 번도 지정하지 않은 값은 undefined로 담깁니다. 이때 화면에는 three.js 기본값(heightSegments 1, openEnded false, thetaStart 0, thetaLength 2π)으로 그려집니다.

Returns:
Type Description
U3dCylinderParam 반지름·높이·세그먼트·외곽선 등 현재 속성 객체

setParam(param)

원기둥(Cylinder)의 속성(색상·투명도·반지름·높이·세그먼트 등)을 한 번에 변경합니다.
전달한 값만 반영되고 나머지는 기존 값이 유지되며, 호출할 때마다 지오메트리와 외곽선이 다시 만들어집니다.

생성 옵션 중 type, topimageurl처럼 재질을 정하는 값은 이 함수로 바뀌지 않습니다. 재질을 바꾸려면 원기둥을 새로 만듭니다. 지오메트리가 새로 만들어지므로 setRotate*FromGeometry·setTranslateFromGeometry로 준 회전과 이동도 함께 사라집니다. 필요하면 호출 뒤에 다시 적용합니다.

Name Type Description
param U3dCylinderCO optional

변경할 속성 객체 (색상·투명도·반지름·높이·세그먼트·각도·외곽선)

setRotateXFromGeometry(x)

원기둥의 지오메트리 자체를 X축 기준으로 회전시킵니다.
축이 Y 방향으로 만들어지므로, 지면에 세울 때 Math.PI / 2를 넣어 축을 지도의 높이 방향(Z)으로 눕힙니다. 도형 객체를 돌리는 setRotation과 달리 정점 좌표를 직접 바꾸므로, 이후 회전·크기 조절의 기준 방향도 함께 바뀝니다.

호출할 때마다 현재 지오메트리에 회전이 누적됩니다. setParam이나 좌표 지정으로 지오메트리가 다시 만들어지면 여기서 준 회전은 사라지므로 다시 호출합니다.

Name Type Description
x number

X축 기준 회전 각도 (라디안). Math.PI / 2가 90도입니다

setRotateYFromGeometry(y)

원기둥의 지오메트리 자체를 Y축 기준으로 회전시킵니다.
축이 Y 방향이므로 원기둥이 자기 축을 중심으로 돕니다. thetaLength로 잘라낸 단면이나 topimage 이미지가 향하는 방향을 돌릴 때 사용합니다.

호출할 때마다 현재 지오메트리에 회전이 누적됩니다. setParam이나 좌표 지정으로 지오메트리가 다시 만들어지면 여기서 준 회전은 사라지므로 다시 호출합니다.

Name Type Description
y number

Y축 기준 회전 각도 (라디안). Math.PI / 2가 90도입니다

setRotateZFromGeometry(z)

원기둥의 지오메트리 자체를 Z축 기준으로 회전시킵니다.
축이 Y 방향이므로 Math.PI / 2를 넣으면 축이 X 방향으로 눕습니다. 원기둥을 옆으로 뉘어 배치할 때 사용합니다.

호출할 때마다 현재 지오메트리에 회전이 누적됩니다. setParam이나 좌표 지정으로 지오메트리가 다시 만들어지면 여기서 준 회전은 사라지므로 다시 호출합니다.

Name Type Description
z number

Z축 기준 회전 각도 (라디안). Math.PI / 2가 90도입니다

setTranslateFromGeometry(x, y, z)

원기둥의 지오메트리 자체를 지정한 만큼 평행 이동시킵니다.
도형이 놓인 좌표는 그대로 두고 정점만 옮기므로, 원기둥의 중심이 좌표에 오는 기본 배치를 밑면 기준으로 바꾸는 것처럼 기준점을 옮길 때 사용합니다.

이동량은 지오메트리의 로컬 좌표 단위입니다. 위경도 좌표를 지정한 원기둥은 반지름·높이에 위도 보정 배율이 곱해져 있으므로, 크기에 맞춰 옮기려면 같은 배율을 반영한 값을 넣습니다.

호출할 때마다 현재 지오메트리에 이동이 누적됩니다. setParam이나 좌표 지정으로 지오메트리가 다시 만들어지면 여기서 준 이동은 사라지므로 다시 호출합니다.

Name Type Description
x number

지오메트리 로컬 X축 이동량

y number

지오메트리 로컬 Y축 이동량. 회전하기 전에는 이 축이 원기둥의 축 방향입니다

z number

지오메트리 로컬 Z축 이동량

Type Definitions

U3dCylinderCOobject

~extends U3dGeometry~U3dGeometryCO
U3dCylinder 생성자 옵션

Properties:
Name Type Argument Default Description
name string <optional>

도형 이름. 레이어에서 도형을 찾을 때 쓰는 식별자이며, 넣지 않으면 무작위 문자열이 자동으로 만들어집니다

color ColorRepresentation <optional>
'#ff0000'

원기둥 표면 색상. 16진수 숫자(0xff0000), CSS 색 문자열('#ff0000') 또는 THREE.Color를 넣습니다

opacity number <optional>
0.7

불투명도 (0~1). 1보다 작으면 투명 처리가 켜지며, 넣지 않으면 0.7이라 기본 원기둥은 반투명하게 그려집니다. 생성 시에 넣은 0은 반영되지 않으므로, 완전히 감추려면 만든 뒤 setParam({opacity: 0})으로 지정합니다

radiusTop number <optional>
5

윗면 원의 반지름 (미터). 위경도 좌표를 지정한 원기둥은 화면에 그릴 때 그 위도의 보정 배율이 곱해집니다

radiusBottom number <optional>
5

밑면 원의 반지름 (미터). 윗면과 다르게 넣으면 원뿔대가 되고, 한쪽에 0을 넣으면 원뿔이 됩니다

height number <optional>
20

축 방향 길이 (미터). 축은 Y 방향으로 만들어지므로 지도 위에 세우려면 setRotateXFromGeometry로 눕혀진 방향을 바로잡습니다

radialSegments number <optional>
32

원둘레를 나누는 면의 수. 클수록 단면이 원에 가까워지고 정점 수가 늘어납니다

heightSegments number <optional>

축 방향으로 나누는 단의 수. 넣지 않으면 1이며, 표면을 따로 변형하지 않는 한 늘려도 겉모습은 같습니다

openEnded boolean <optional>

윗면과 밑면의 뚜껑을 없앨지 여부. true면 옆면만 남아 속이 비어 보이고, 넣지 않으면 양쪽 모두 막힙니다

thetaStart number <optional>

단면 원을 그리기 시작하는 각도 (라디안, 0~2π). 잘려 나간 쪽이 어느 방향을 보게 할지 정합니다. thetaLength가 한 바퀴보다 작을 때만 효과가 있고, 꽉 찬 원기둥에서는 어떤 값을 넣어도 모양이 같습니다. 넣지 않으면 0

thetaLength number <optional>

단면 원을 그릴 각도 범위 (라디안, 0~2π). 넣지 않으면 한 바퀴(2π)라 꽉 찬 원기둥이 됩니다. π(3.1416)면 반원기둥, π/2(1.5708)면 1/4쪽만 그려집니다

type 'basic' | 'topimage' | 'standard' <optional>
'basic'

재질 타입. basic은 단색, topimage는 윗면에 이미지를 입힌 재질, standard는 조명을 받는 표준 재질입니다. 생성 시에만 적용되며 setParam으로는 바꿀 수 없습니다

topimageurl string <optional>

윗면에 입힐 이미지 URL. type이 topimage일 때만 사용하며, 생성 시에만 적용됩니다

wireframe boolean <optional>
false

면을 채우지 않고 삼각형 모서리만 선으로 그릴지 여부. 형태와 분할 상태를 확인할 때 사용합니다

showLabel boolean <optional>
true

도형에 붙은 라벨을 화면에 표시할지 여부

vertices Array.<WorldPositionVector3> <optional>

원기둥을 놓을 월드 좌표 배열 (EPSG:3857). 첫 번째 좌표에 원기둥의 중심이 놓입니다

coordinates Array.<GeoPositionVector3> <optional>

원기둥을 놓을 위경도 좌표 배열 (EPSG:4326). 첫 번째 좌표의 위도로 크기 보정 배율을 계산합니다

properties KeyValue <optional>

도형과 함께 보관할 사용자 정의 속성. 화면 표현에는 쓰이지 않으며 클릭한 도형의 부가 정보를 담을 때 사용합니다

U3dCylinderParamobject

getParam 함수가 반환하는 원기둥(Cylinder) 속성 객체입니다.
이 객체를 다른 원기둥의 setParam에 그대로 넘기면 같은 형태로 맞출 수 있습니다.

Properties:
Name Type Description
radiusTop number

윗면 원의 반지름 (미터)

radiusBottom number

밑면 원의 반지름 (미터)

height number

축 방향 길이 (미터)

radialSegments number

원둘레를 나누는 면의 수

heightSegments number | undefined

축 방향으로 나누는 단의 수. 지정한 적이 없으면 undefined이며 이때는 1로 그려집니다

openEnded boolean | undefined

윗면과 밑면의 뚜껑을 없앴는지 여부. 지정한 적이 없으면 undefined이며 이때는 양쪽 모두 막힙니다

thetaStart number | undefined

단면 원을 그리기 시작한 각도 (라디안). 지정한 적이 없으면 undefined이며 이때는 0으로 그려집니다

thetaLength number | undefined

단면 원을 그린 각도 범위 (라디안). 지정한 적이 없으면 undefined이며 이때는 한 바퀴(2π)로 그려집니다

outline boolean

외곽선(테두리 선)을 표시하는지 여부