Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск кротчайшего пути от точки до отрезка, НАРОД HELP!!!! ГОРЮ !!!!!! 
:(
    Опции темы
anwe
Дата 1.12.2006, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Во-первых, там Pascal.
Во-вторых, там перед кодом расписана теория для лучшего понимания, приведены математические уравнения. Все знаки, указанные в них реализуются в асме.
Другими словами, хотел натолкнуть на то, что бы ты сам решил, а вопросы задавал лишь конкретные, но что-то не получается. smile
PM MAIL   Вверх
triam
Дата 2.12.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



anwe, теория геометрии?
это я уже сам всё вывел... я же сказал что сам я реализовать на ASM-e не могу, меня сегодня вечером известили что завтра сдавть, вот и всё, я даже не знаю сейчас за что хвататься в первую очередь. Просто сижу и читаю Зубкова разбираю его первые проги, пытаюсь вникнуть, а с геометрией, я уже разобрался....


PM MAIL   Вверх
anwe
Дата 2.12.2006, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Цитата(triam @  1.12.2006,  23:18 Найти цитируемый пост)
завтра сдавть

Ты настоящий студент smile У тебя еще вся ночь впереди! smile 
Было бы часа на 2 поменьше - помог бы
Кстати, завтра (у меня, не знаю как у тебя) суббота!
PM MAIL   Вверх
triam
Дата 2.12.2006, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



Цитата(anwe @ 2.12.2006,  00:25)
Кстати, завтра (у меня, не знаю как у тебя) суббота!

Завтра т.е. сегодня, у меня тоже суббота, мы по ним учимся обычно....
Всё равно спасибо smile 
PM MAIL   Вверх
triam
Дата 3.12.2006, 05:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



Так вот!
продолжим общение:

Я всё равно настаиваю на своём алгоритме, грамотно подкорректированным, 
dma, что немного противоречит anwe, который утверждает, что перпендикуляр может являться кротчайшим расстоянием только тогда когда треугольник равнобедренный или равносторонний, - наличие перпендикуляра уже говорит что он короче остальных двух сторон...

Посему, сначала ищем перпендикуляр....
пускай мы имеем
начальные координаты отрезка:
x1, y1
и конечные:
x2, y2
а так же той злополучной точки:
tx, ty

и точка которая преналежит двум отрезкам сразу(такая  будет, если отрезки перпендикулярны что в принципе и должно проверяться):
un_x, un_y

Общее уравнение прямой:
y=kx+b
Зная две координаты этой прямой, не трудно вычислить неизвестные элементы в нашем случае, это k и b
k=(y2-y1)/(x2-x1)

Условием перпендикулярности двух прямых является k1=-1/k2
в нашем случае это будет выполнение следующего условия:
Код

if((ty-un_y)/(tx-un_x)==(-1)*(x2-x1)/(y2-y1))   // значит перпендикуляр у нас есть


Что каcается исполнения на Asm-e:
Чтобы поставить условие надо юзать команду test, ну и там как следствие jnz

Но первая загвоздка  в вычислении самого выражения...
В какой-то мере мы имеем дело с числами с плавающей точкой, и поэтому прийдётся использовать команды FPU.
Тут я пытаюсь вычичлить левую часть условия  (ty-un_y)/(tx-un_x)
Вот примерные наброски кода(прошу сильное негодование не выржать по этому поводу, ну нет у меня пока Assembler-вского мышления):
Код

    ty  dw ?             ; так как координаты задаёт юзер
    tx  dw ?            ; значение их мы пока не знаем....
    x2  dw ?
    x1  dw ?
    y2  dw ?
    y1  dw ?
  un_x  dw ?
  un_y  dw ?
   ;mov eax, ty
   fld ty          ; загружаем ty в стек
   ;mov eax, un_y
   fld1 un_y           ; загружаем ty в стек
   fsubr              ; вычитаем из  ty  un_y
   fld2 tx            ; загружаем tx в стек
   fld3 un_x         ; загружаем un_x в стек   
   fsubr             ; вычитаем  
  fdiv                ; делим 


Вот. 
Жду ваших - замечаний...  Одна надежда на вас!!! выручайте!

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0425 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.