任意多边形生成
void ADataV_PointHistogram::PolyGen(FVector center, float radius, int32 numEdge, TArray<FVector>& outPosition)
{
if (numEdge % 2 == 1)
{
FVector point(0, radius, center.Z);
outPosition.Add(point);
double Arc = PI / 2.0;
for (int i = 0; i < numEdge - 1; i++)
{
Arc -= (2 * PI) / numEdge;
point.X = (radius * cos(Arc));
point.Y = (radius * sin(Arc));
outPosition.Add(point);
}
}
else
{
FVector point;
point.Z = center.Z;
double Arc = PI / 2 - PI / numEdge;
point.X = (radius * cos(Arc));
point.Y = (radius * sin(Arc));
outPosition.Add(point);
for (int i = 0; i < numEdge - 1; i++)
{
Arc -= (2 * PI) / numEdge;
point.X = (int)(radius * cos(Arc));
point.Y = (int)(radius * sin(Arc));
outPosition.Add(point);
}
}
for (auto& pos : outPosition)
{
pos += FVector(center.X, center.Y, 0.0f);
}
}