Zend PDF Нарисуй изогнутую линию

В настоящее время я пытаюсь нарисовать угловую линию на чертеже Zend PDF. Постараюсь объяснить столько, сколько я знаю об этом.
введите описание изображения здесь

Код для линии и стрелок следующий:

$this->drawArrow($pdf, $xStart + 58.5, $yStart,1, 270); //bottom left  arrow
$this->drawArrow($pdf, $xStart + $leftRake, $yStart + ($leftRake/     tan(deg2rad(abs($leftRake)))) ,1, 157); //top left  arrow
$pdf->drawCircle($xStart, $yStart, 58.5, 0, deg2rad(90 - abs($leftRake)), $fillType); //left angle line

Стрелка рисования — это функция, которую я создал:

@param object $pdf The page to draw on
* @param integer $x Page coordinate for arrow
* @param integer $y Page coordinate for arrow
* @param float $scale Default size 1
* @param integer $angle Arrow angle 90 = up, 180 = right, 270 = down etc
*
* @return $pdf Page returned with arrow
*
*/
drawArrow($pdf, $x, $y, $scale = 1, $angle)

This is the function for drawCircle:
6.  * Method signatures:
7.  * drawCircle($x, $y, $radius);
8.  * drawCircle($x, $y, $radius, $fillType);
9.  * drawCircle($x, $y, $radius, $startAngle, $endAngle);
10. * drawCircle($x, $y, $radius, $startAngle, $endAngle, $fillType);
11. *
12. *
13. * It's not a really circle, because PDF supports only cubic Bezier
14. * curves. But very good approximation.
15. * It differs from a real circle on a maximum 0.00026 radiuses (at PI/8,
16. * 3*PI/8, 5*PI/8, 7*PI/8, 9*PI/8, 11*PI/8, 13*PI/8 and 15*PI/8 angles).
17. * At 0, PI/4, PI/2, 3*PI/4, PI, 5*PI/4, 3*PI/2 and 7*PI/4 it's exactly
18. * a tangent to a circle.
19. *
20. * @param float $x
21. * @param float $y
22. * @param float $radius
23. * @param mixed $param4
24. * @param mixed $param5
25. * @param mixed $param6
26. * @return Zend_Pdf_Page
27. */
28. public function  drawCircle($x,
29.                             $y,
30.                             $radius,
31.                             $param4 = null,
32.                             $param5 = null,
33.                             $param6 = null);

Ближайшая к изогнутой линии — функция рисования круга:
Переменные xstart и ystart — это угол (слева внизу)
Точка $ leftRake — это угловая линия, значение хранится в моей базе данных.

Для линии drawCircle начальный угол — это нижняя линия (0), а конечный угол в идеале должен соответствовать прямой диагональной прямой (что и происходит на изображении).

Моя проблема в том, что я не могу получить верхнюю стрелку, совпадающую с линией конечного угла в бите круга прорисовки … Есть предложения?

1

Решение

Кажется, проблема размещения стрелок заключается в тригонометрии, поскольку код выглядит в целом нормально. Итак, где у вас есть эта строка:

$this->drawArrow($pdf, $xStart + $leftRake, $yStart
+ ($leftRake / tan(deg2rad(abs($leftRake)))) ,1, 157); //top left  arrow

Следует читать:

$this->drawArrow($pdf, $xStart + (58.5 * cos(deg2rad(abs(90 - $leftRake)))), $yStart
+ (58.5 * sin(deg2rad(abs(90 - $leftRake)))) ,1, 157); //top left  arrow
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector