在 360 度圆上写 Text/Values
Write Text/Values On 360 degree Circle
我正在设计轮图,我需要帮助定位 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");
但这是我需要放置的每行的 find/calculate 像素。
我相信有更好的、动态的和聪明的方法可以根据文本在 360 度圆中的值将文本放置在 x、y 位置。
你能帮我解决一下吗?
嗨,我想你想在给定圆上找到给定度数的点。这是一个计算圆上点的函数。我认为您可以轻松地将其转换为任何其他语言。
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);
}
我正在设计轮图,我需要帮助定位 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");
但这是我需要放置的每行的 find/calculate 像素。
我相信有更好的、动态的和聪明的方法可以根据文本在 360 度圆中的值将文本放置在 x、y 位置。
你能帮我解决一下吗?
嗨,我想你想在给定圆上找到给定度数的点。这是一个计算圆上点的函数。我认为您可以轻松地将其转换为任何其他语言。
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);
}