반응형
유니티에서 라이다 디버깅 뷰어용으로 쓸 원그리기
삼각함수를 활용하면 된다
반지름이 r 일때 길이가 1 인 벡터와 평행하고 길이는 r 배 만큼 증가했으므로 (x , y)는 스칼라 곱셈에 의해 $r\cdot (cos \theta , sin \theta) $가 됨
삼각함수 내용 정리 : https://8trian8.tistory.com/93
유니티 코드
public static class TrigonometricFunctions
{
// 1° = π⁄180
const float Rad = (Mathf.PI * 2) / 360;
// 데카르트 좌표계 버전
// 파라미터 : 앵커 포지션, 각도분해능, 그릴 각도, 반지름
public static Vector3[] Cartasian2DCircleLineGroup(Vector3 anchorPosition, int drawCount, float offset,
float radius)
{
Vector3[] pointGroup = new Vector3[drawCount];
for (int i = 0; i < drawCount; i++)
{
var dro = i * Rad + offset;
// 엥커위치 + 각도방향벡터 * 반지름값
pointGroup[i] = anchorPosition + new Vector3(Mathf.Cos(dro), Mathf.Sin(dro), 0) * radius;
}
return pointGroup;
}
}
void Cartesian_Draw2DCircle()
{
int drawCount = (int) (degree / angularResolution);
var lineGroup = TrigonometricFunctions.Cartasian2DCircleLineGroup(anchorPosition, drawCount, offset, radius);
for (int i = 0; i < degree; i++)
{
Debug.DrawLine(anchorPosition, lineGroup[i]);
}
}
극좌표계 버전
public static class TrigonometricFunctions
{
// 1° = π⁄180
const float Rad = (Mathf.PI * 2) / 360;
.
.
// 극 좌표계 버전
public static Vector3[] Polar2DCircleLineGroup(Vector3 anchorPosition, float[] radius, float offset)
{
Vector3[] pointGroup = new Vector3[radius.Length];
for (int i = 0; i < radius.Length; i++)
{
var dro = i * Rad + offset;
pointGroup[i] =anchorPosition+ new Vector3(radius[i] * Mathf.Cos(dro), radius[i] * Mathf.Sin(dro), 0);
}
return pointGroup;
}
}
void Polar_Draw2DCircle()
{
int drawCount = (int) (degree / angularResolution);
var dataGroup = CreateDistanceDataWithCurve(drawCount);
var lineGroup = TrigonometricFunctions.Polar2DCircleLineGroup(anchorPosition, dataGroup, offset);
for (int i = 0; i < drawCount; i++)
{
Debug.DrawLine(anchorPosition, lineGroup[i]);
}
}
// 애니메이션 커브로 데이터 만들기
float[] CreateDistanceDataWithCurve(int count)
{
var testCoordinate = new float[count];
for (int i = 0; i < count; i++)
{
float n = (1f / count) * i;
testCoordinate[i] = curve.Evaluate(n) * radius;
}
return testCoordinate;
}
반응형
'programming | development > unity' 카테고리의 다른 글
Unity AnimationCurve 활용 (0) | 2023.04.18 |
---|---|
Unity + Realsense F200 (0) | 2022.06.14 |
HDRP Raytracing 세팅 (0) | 2022.03.14 |
Unity + OpenCV OpticalFlowPyrLK + Visual Effect Graph (0) | 2022.03.10 |
Component Inspector 항목들 (0) | 2022.02.26 |
댓글