Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2010, 21:11
Аватар для Slawaq
Профессор
Отправить личное сообщение для Slawaq Посмотреть профиль Найти все сообщения от Slawaq
 
Регистрация: 19.05.2010
Сообщений: 187

Срочно, помогите с исправлением функции)
от код яваскрипта чтобы нарисовать линию, в пиксельной таблице размером в 50на50
function crt_t(){
	var x = 50;
    var y = 50;
    var s = '<table width="1" border="0" cellspacing="0">';
    var id = '';
   for (var j = 1; j <= y; j++) {
  s += '<tr>';
  for (var i = 1; i <= x; i++) {
    var id = i+';'+j;
    s += '<td id="' + id + '" bgcolor="#009900" ></td>'
  }
  s += '</tr>';
}
s += '</table>';
document.getElementById('dd').innerHTML = s;
}

function line(x1,x2,y1,y2){
	xt = x1 + 1;
	n = Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) ;
	k = (y2-y1)/(x2-x1);
	b = y2-k*x2;
	for (i=0;i<n;i++){ 
	yt=Math.round(k*xt+b);
	document.getElementById(xt+';'+yt).bgColor = 'black';
	xt = xt + 1;
	}
}


n - формула для нахождения отрезка, то есть его длину, и это есть количество точек, которое стоит между точками (х1;у1) и (х2;у2), то есть нам надо сделать далее цикл который и будет ставить эти точки, но нам надо найти теперь координаты этих точек, применяя формулу что
y = x*k + b, для прямолинейного отрезка, чтобы иметь эту формулу нам надо узнать k - угловой коэффициент и b - смещение, короче это будет система из уравнений, y1 = k*x1+b и y2 = k*x2+b но так как яваскрипт не решает системы из двух не известных, я ему сократил до
k = (y2-y1)/(x2-x1) де у нас x1,x2,y1,y2 >0 и подставивши это в уравнение прямой, b = y2 - k*x1 = y2 - (y2-y1)/(x2-x1)*x1.
и в конце оно просто добавляет по +1 к иксу и узнает у и его заливает), но линия может получаться немного не ровная или дето не будет зватать пкселей) или если задать line(49,35,45,25) так оно вообще нарисует точку, ОДНУ!) (49;45) и всё..) кто-мне может помочь с єтой функцией, не много , пожалуйста)
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2010, 22:50
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Скажите, уважаемый, Вы язык, на котором пишете, знаете?
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2010, 23:08
Аватар для Slawaq
Профессор
Отправить личное сообщение для Slawaq Посмотреть профиль Найти все сообщения от Slawaq
 
Регистрация: 19.05.2010
Сообщений: 187

ну...
да, как же по-другому, примерно 2 недели учил)))
но если серьезно что не так?)

Последний раз редактировалось Slawaq, 20.05.2010 в 23:11.
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2010, 23:29
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Судя по тому, что точки вообще ставятся, дело в функции line.
Кажется, у Вас неверные условия для цикла. Особенно смущает переменная n. Лучше перепроверьте - то ли она значит, что надо.
Ответить с цитированием
  #5 (permalink)  
Старый 21.05.2010, 00:19
Аватар для Slawaq
Профессор
Отправить личное сообщение для Slawaq Посмотреть профиль Найти все сообщения от Slawaq
 
Регистрация: 19.05.2010
Сообщений: 187

ну смотри, n - это есть формула для нахождение отрезка между 2 точками, если известно их координаты, и пишется примерно так:
AB*AB = (X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)
ну там все в квадрате, это ясно, и тогда расстояние отрезка и должно быть количеством точек, но при рисовании некоторых линий, линии бывают не соединении правильно. я от и хотел узнать почему же так... может там надо еще какие-то параметры..)
Ответить с цитированием
  #6 (permalink)  
Старый 21.05.2010, 08:22
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,571

Вот уже начинается....
Сначала выбирается неверная модель (большая пиксельная таблица для рисования) а потом начинаются попытки что то в ней сделать. Кое где(canvas), достаточно вызвать функцию line.
Прикольно будет когда эллипс тебе придется рисовать .
Ответить с цитированием
  #7 (permalink)  
Старый 21.05.2010, 08:56
Аспирант
Отправить личное сообщение для autosoft Посмотреть профиль Найти все сообщения от autosoft
 
Регистрация: 23.08.2008
Сообщений: 30

С теории нужно начинать.

Например, с этого:
Алгоритм_Брезенхэма
Ответить с цитированием
  #8 (permalink)  
Старый 21.05.2010, 08:58
Аватар для Slawaq
Профессор
Отправить личное сообщение для Slawaq Посмотреть профиль Найти все сообщения от Slawaq
 
Регистрация: 19.05.2010
Сообщений: 187

Эллипс будет по такой же схеме, находим окружность, то есть количество точек, и с помощью цикла, ставим точке по формуле круга и всё, только мне надо правильно придумать если это будет уже реально эллипс, ну то есть искривлённый круг, от там надо будет подумать над коэффициентами..))
короче, а короче то что кажется зачем? но интересно ведь свою разработку делать!)
но как я понял, не кто не поможет с линией, значит будем экспериментировать и исправлять)
Ответить с цитированием
  #9 (permalink)  
Старый 21.05.2010, 09:14
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Slawaq
находим окружность, то есть количество точек, и с помощью цикла, ставим точке по формуле круга и всё
Это на непрерывном поле для рисования и всё, а на дискретном, как ваше, не всё.

Сообщение от Slawaq
не кто не поможет с линией
Вам уже дали то, с чего следовало начать.
Сообщение от autosoft
Например, с этого:
Алгоритм_Брезенхэма
Если уж вы хотите сами рисовать все примитивы, то придётся узнать, а как они вообще рисуются.
Ответить с цитированием
  #10 (permalink)  
Старый 21.05.2010, 11:44
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,571

Slawaq, колись - лаба, курсак или мышцы размять ?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите связать 2е функции и вытянуть переменную wwwMAXiDROM Общие вопросы Javascript 2 21.03.2010 09:58
ааа помогите пожалуйста срочно! White_Pony Общие вопросы Javascript 4 05.03.2010 01:56
Помогите пожалуйста, очень срочно!!! PAMAC AJAX и COMET 1 20.10.2009 23:38
Помогите разобраться в повторным обращении к функции, как её обнулить. AdvoGad Общие вопросы Javascript 0 01.09.2008 11:35
Помогите прокомментировать функции ! Help!!! Deep Общие вопросы Javascript 4 24.05.2008 18:42