Как нарисовать 3D круговую диаграмму с помощью Canvas и отображать процентное соотношение в соответствии с щелчком мыши? - PullRequest
0 голосов
/ 10 января 2012

У меня есть проблема, пожалуйста, дайте мне предложение?Моя проблема: рисование 3D круговой диаграммы и когда вы щелкаете и перемещаетесь к точке на круговой диаграмме, часть отображается с начальной точки (в направлении 12 часов) до точки отпускания мыши.

Пожалуйста, дайте мне некоторое представление, я плохо разбираюсь в математике и не знаю, как вычислить ангела, где мышь отпущена из точки, и отрисовать часть от заданной точки до точки, где отпустила мышь.

Спасибозаблаговременно !Извините за мой плохой английский, если вам трудно понять, что я пытаюсь сказать.Еще раз спасибо!

1 Ответ

4 голосов
/ 08 июня 2012

Старый вопрос, но звучит как забавная проблема. Я придерживаюсь 2D в этой точке. Если вам требуется 3D, вы можете начать с изучения этого и затем выяснить, как превратить его в 3D-пространство, что, очевидно, намного сложнее.

Вы хотите найти угол среза пирога, образованного дугой, начинающейся в 12 часов (пи / 2) и заканчивающейся радиусом, который делит пополам мышь и вершину. Затем используйте холст, чтобы заполнить эту область.

what you want

Математика -

Найдите этот угол, построив прямоугольный треугольник:

Сторона 1 (y): по вертикали от центра круга (вершины) до положения y щелчка

Сторона 2 (x): по горизонтали от положения y щелчка до положения x щелчка

Сторона 3: по диагонали от вершины до положения x щелчка (это гипотенуза, красного цвета, и ее не нужно знать)

get x and y

Помните, положение мыши считается слева направо и сверху вниз.

Посмотрите, как длина стороны x равна положению x щелчка за вычетом радиуса круга?

Затем используйте котангенс (соседняя сторона / противоположная сторона) и вычтите его из числа пи (180 градусов), чтобы найти угол затененной области.

use cotan

Как вы можете видеть, в некоторых квадрантах вы добавляете пи, а в некоторых - нет, но именно так вы и находите угол своего среза.

Кроме того, вы должны отрегулировать 1/4 пути вокруг круга (1/2 пи), потому что вы начинаете с 1/2 пи (90 градусов).

Код -

Это плагин jQuery -

https://raw.github.com/thilosavage/pielighter/master/pielighter.js

Диаметр круга задается свойством size элемента canvas.

т.е. <canvas id='myPIe' size='400'></canvas> создаст ваш круг шириной 400px.

Вы можете настроить размер границы, цвет границы и цвет заливки.

Вы можете добавить обратные вызовы для onRelease и onDrag, которые передают проценты, градусы и радианы выбранного среза.

Простая демонстрация: http://thilosavage.com/projects/pielighter/demo-simple.php

Полная демонстрация: http://thilosavage.com/projects/pielighter/demo-full.php

...