Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / HTML, JavaScript, VBScript, CSS Новый топик    Ответить
 нарисовать линию от окружности  [new]
nikomp
Member

Откуда: Нижний Новгород
Сообщений: 905
Подскажите как нарисовать линию так, чтоб она начиналась от окружности, а не от центра (см рис.)
Есть координаты центра, есть радиус.

Пробовал пересчитать координаты вот так:

var angle1 = Math.atan((end.y-start.y)/(end.x-start.x))* 180 / Math.PI;
var x1=start.x+40*Math.cos(angle1);
var y1=start.y+40*Math.sin(angle1);


но получается ерунда какая-то

подскажите, что я не так делаю?

К сообщению приложен файл. Размер - 4Kb
16 апр 18, 23:22    [21343839]     Ответить | Цитировать Сообщить модератору
 Re: нарисовать линию от окружности  [new]
stanilar
Member

Откуда: Спб
Сообщений: 847
Может взять готовую либу для рисования? Там такие вещи уже оформлены в удобное апи.
17 апр 18, 01:43    [21343972]     Ответить | Цитировать Сообщить модератору
 Re: нарисовать линию от окружности  [new]
982183
Member

Откуда: VL
Сообщений: 3120
nikomp
Есть координаты центра, есть радиус.

Это параметры круга.
А по линии что известно?
17 апр 18, 03:23    [21344005]     Ответить | Цитировать Сообщить модератору
 Re: нарисовать линию от окружности  [new]
nikomp
Member

Откуда: Нижний Новгород
Сообщений: 905
982183,

координаты начала и конца
17 апр 18, 20:38    [21346703]     Ответить | Цитировать Сообщить модератору
 Re: нарисовать линию от окружности  [new]
nikomp
Member

Откуда: Нижний Новгород
Сообщений: 905
stanilar,

что за либа?
17 апр 18, 20:39    [21346704]     Ответить | Цитировать Сообщить модератору
 Re: нарисовать линию от окружности  [new]
maxkar
Member

Откуда:
Сообщений: 154
nikomp,

А в чем смысл хитроумных манипуляций с 180 и PI? Вы считаете, что синус и арктангенс работают с разными единицами измерения?
Еще там по делу просится atan2 или как его аналог в вашем языке зовется (с двумя аргументами арктангенс).
Можно еще вместо тригонометрии вектор ((end.x-start.x), (end.y-start.y)) просто по нужной длине отнормировать и прибавить.
17 апр 18, 21:46    [21346863]     Ответить | Цитировать Сообщить модератору
 Re: нарисовать линию от окружности  [new]
nikomp
Member

Откуда: Нижний Новгород
Сообщений: 905
maxkar
nikomp,

Можно еще вместо тригонометрии вектор ((end.x-start.x), (end.y-start.y)) просто по нужной длине отнормировать и прибавить.


не совсем понял что вы имеете ввиду
17 апр 18, 22:38    [21347011]     Ответить | Цитировать Сообщить модератору
 Re: нарисовать линию от окружности  [new]
nikomp
Member

Откуда: Нижний Новгород
Сообщений: 905
maxkar,

спасибо за наводку. получилось вот так:

	// Пересчитаем координаты для начала
	var angle1 = Math.atan2(start.y,start.x);
	var x1=start.x+40*Math.cos(angle1);
	var y1=start.y+40*Math.sin(angle1);
	
	// Пересчитаем координаты для конца
	var angle2 = Math.atan2(end.y, end.x);
	var x2=end.x-40*Math.cos(angle2)-3; // -3 из-за стрелки на конце
	var y2=end.y-40*Math.sin(angle2)-3;
17 апр 18, 22:51    [21347049]     Ответить | Цитировать Сообщить модератору
 Re: нарисовать линию от окружности  [new]
nikomp
Member

Откуда: Нижний Новгород
Сообщений: 905
вот результат

К сообщению приложен файл. Размер - 7Kb
17 апр 18, 22:52    [21347052]     Ответить | Цитировать Сообщить модератору
Все форумы / HTML, JavaScript, VBScript, CSS Ответить