在360度圆上书写文本/值

时间:2015-09-11 11:14:43

标签: php image-processing gd

我正在进行轮盘设计,我需要帮助将文本放在360轮上。

车轮有12个部分,每个部分为30度。文本与圆外线的偏移应该相等(或至少相似)。如下图所示,我在最终结果中嘲笑了我需要的东西。

enter image description here

到目前为止,我所尝试的是将每个部分拆分为单独的变量,例如。

$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位置。

你可以帮我解决一下吗?

1 个答案:

答案 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);
}
相关问题