我正在进行轮盘设计,我需要帮助将文本放在360轮上。
车轮有12个部分,每个部分为30度。文本与圆外线的偏移应该相等(或至少相似)。如下图所示,我在最终结果中嘲笑了我需要的东西。
到目前为止,我所尝试的是将每个部分拆分为单独的变量,例如。
$section1_startX = 50;
$section1_endX = 70;
$section1_startY = 310;
$section1_endY = 480;
然后放置文字
imagettftext($im, 15, 0, $section1_startX, $section1_startY, $black, $font, "05");
但这是为了找到/计算我需要放置的每一行的像素。
我确信有更好的,动态的,智能的方法可以根据360圈中的值将文本放在x,y位置。
你可以帮我解决一下吗?答案 0 :(得分:1)
嗨,我想你想找到给定学位的给定圆上的一个点。这是一个计算圆上点的函数。我认为您可以轻松地将其转换为任何其他语言。
public static PointF PointOnCircle(float radius, float angleInDegrees, Point origin)
{
//radius -> Radius of Circle & Origin -> Circle Centre.
// Convert from degrees to radians via multiplication by PI/180
float x = (float)(radius * Math.Cos(angleInDegrees * Math.PI / 180F)) + origin.X;
float y = (float)(radius * Math.Sin(angleInDegrees * Math.PI / 180F)) + origin.Y;
return new PointF(x, y);
}