Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 31.07.2013, 16:31
Интересующийся
Отправить личное сообщение для essere Посмотреть профиль Найти все сообщения от essere
 
Регистрация: 29.03.2013
Сообщений: 27

Сообщение от Дзен-трансгуманист Посмотреть сообщение
тогда еще раз: почему perpLen не определен?
Да это вечер, давно он уже определен))
Ответить с цитированием
  #12 (permalink)  
Старый 31.07.2013, 16:59
Интересующийся
Отправить личное сообщение для essere Посмотреть профиль Найти все сообщения от essere
 
Регистрация: 29.03.2013
Сообщений: 27

Честно говоря совсем запутался, что есть х что у, вобщем у себя менял местами, заработало. Но правда математика так и осталась загадкой.
Ответить с цитированием
  #13 (permalink)  
Старый 31.07.2013, 17:02
Интересующийся
Отправить личное сообщение для essere Посмотреть профиль Найти все сообщения от essere
 
Регистрация: 29.03.2013
Сообщений: 27

Да, все правильно, это меня геометрия сбила с толку, все правильно х и там и там.
Осталось смещение убрать ;]
Ответить с цитированием
  #14 (permalink)  
Старый 31.07.2013, 17:13
Интересующийся
Отправить личное сообщение для essere Посмотреть профиль Найти все сообщения от essere
 
Регистрация: 29.03.2013
Сообщений: 27

Дзен-трансгуманист,
Спасибо Вам ;]
Вот получилось вот такая красота:
var coords = [];
    var perps = [];

    var ctx = document.getElementById("myCanvas").getContext("2d");

        function getCoords(e)
        {

            drawCircle(e.clientX, e.clientY, 3);
                
            coords.push(e.clientX, e.clientY);

            if (coords.length === 4) {

                x1 = coords[0]; x2 = coords[2];
                y1 = coords[1]; y2 = coords[3];

                var dx = x2 - x1;
                var dy = y2 - y1;
                //var lineLen = Math.sqrt( dx * dx + dy * dy );

                var perpHalfDX = -dy / 150 * 100;
                var perpHalfDY = +dx / 150 * 100;

        
                var perpX = (x1 + x2)/2;
                var perpY = (y1 + y2)/2;

                drawLine(perpX, perpY, perpX + perpHalfDX, perpY + perpHalfDY);

                drawCircle(perpX, perpY, 3);

                //drawLine(perpX, perpY, perpX+200, perpY+200);
                drawLine(coords[0], coords[1], coords[2], coords[3]);
                coords = [];

            }
        }


    function drawLine(x_first, y_first, x_second, y_second) 
    {
        ctx.beginPath();   
        ctx.moveTo( x_first, y_first );
        ctx.lineTo( x_second, y_second );
        ctx.lineWidth = 2; 
        ctx.stroke();
    }

    function drawCircle(x, y, radius) 
    {
        ctx.beginPath();  
        ctx.arc(x, y, radius, 0, Math.PI*2, false);  
        ctx.closePath();  
        ctx.fill();  
    }
Ответить с цитированием
  #15 (permalink)  
Старый 31.07.2013, 17:18
Интересующийся
Отправить личное сообщение для essere Посмотреть профиль Найти все сообщения от essere
 
Регистрация: 29.03.2013
Сообщений: 27

А можно самый страшный вопрос? Вот убрал смещение перпендикуляра, теперь все классно. Нарисовал линию и теперь от ее центра пошел длинный перпендикуляр.
Если нарисовать две линии, так, чтобы перпендикуляры пересеклись, как можно найти его угол? Логически.
Ответить с цитированием
  #16 (permalink)  
Старый 31.07.2013, 18:01
Интересующийся
Отправить личное сообщение для essere Посмотреть профиль Найти все сообщения от essere
 
Регистрация: 29.03.2013
Сообщений: 27

Сообщение от Дзен-трансгуманист Посмотреть сообщение
сумма углов четырехугольника 360 градусов
без двух перпендикуляров остается 180
угол между линиями = 180 - угол между перпендикулярами (и наоборот)
Т.е. Я правильно Вас понял, что в расчете участвуют абсолютно все точки?
Безымянный.jpg
Ответить с цитированием
  #17 (permalink)  
Старый 31.07.2013, 18:17
Интересующийся
Отправить личное сообщение для essere Посмотреть профиль Найти все сообщения от essere
 
Регистрация: 29.03.2013
Сообщений: 27

Сообщение от Дзен-трансгуманист Посмотреть сообщение
Нет, только векторы самих линий.

мне лень объяснять, прошу в гугл: "угол между векторами", "векторная алгебра" и прочая-прочая
Ок спасибо, формулу найду. Посчитаю.
Кстати, а сами точки можно как то двигать? Т.е. я поставил линию, могу ли я как то одну из точек передвинуть, а не обнулять все. Как мне ее подхватить, понятно, что тут будет onmousemove событие, но как мне за существующую точку захватиться?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
canvas - нарисовать линии Valentinka_1 Общие вопросы Javascript 1 09.05.2013 21:51
рисование прямоугольника по движению мыши prizrak39 Events/DOM/Window 4 14.03.2013 15:36
Рисование на карте (маркеры, траектория) vita1ii Библиотеки/Тулкиты/Фреймворки 7 23.02.2013 22:35
Создание экземпляра Canvas не затрагивая HTML Tails Общие вопросы Javascript 2 09.03.2012 13:55
Добавить на canvas еще один елемент greengarlic Общие вопросы Javascript 5 22.09.2010 10:16