Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

наклон линии   Найти похожие ветки 

 
Tirael ©   (2007-01-13 04:45) [0]

есть картинка бмп на белом фоне черная линия, толщиной неск пикселов (произвольно) есть ли простой способ определить угол наклона этой лини к горизонтали? хотябы приблизительный алгоритмик плиз, или ссылку где почитать


 
MikePetrichenko ©   (2007-01-13 04:51) [1]

Есть. Почитать учебник геометрии. Школьный курс. Алгебра. Тот же школьный курс (чтобы функию линии по ее точкам построить)


 
Tirael ©   (2007-01-13 04:53) [2]


> MikePetrichenko ©   (13.01.07 04:51) [1]


злой ты... где ж этот учебник то достать )))

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


 
MikePetrichenko ©   (2007-01-13 04:56) [3]

Написал. Покурил. Вспомнил. Алгебра не нужна. Достаточно теоремы Пифагора из Геометрии.

> а если серьезно то проблема в том, что, как я писал, линия
> произвольной толщины... и точки ее понятие относительное.
>  например выбрав неск пикселов поперек линии, тоже получим
> линию, но не ту что нужно (

Какая разница какой она толщены? Учи сейчас (если раньше не учил) теорему Пифагора и будет тебе счатье.


 
Tirael ©   (2007-01-13 04:58) [4]


> MikePetrichenko ©   (13.01.07 04:56) [3]


кто то из нас уже спит... ибо проблема сводится к определению точки начала и точки конца этой линии... а вот как это сделать...


 
MikePetrichenko ©   (2007-01-13 04:58) [5]

Да! Алгоритм:
1. Принять за начало координат нижний левый угол картинки
2. Сдвинуть начало координат так, что бы начало линии совпадало с точкой (0, 0) - так проще считать.
3. Опустить из произвольной точки на линии перпендикуляр на ось Х.
4. В получившемся прямоугольном треугольнике найти угол между катетом и гепатенузой по теореме Пифагора.


 
MikePetrichenko ©   (2007-01-13 05:00) [6]


> кто то из нас уже спит... ибо проблема сводится к определению
> точки начала и точки конца этой линии... а вот как это сделать.
> ..

Вопрос стоял про угол, а не про распознавание линии на картинке, что тоже не большая проблема, если картинка контрастная.


 
Tirael ©   (2007-01-13 05:03) [7]


> Вопрос стоял про угол, а не про распознавание линии на картинке
>


ну я не знаю как еще вопрос задать... я написал исходные данные: картинка, линия... если б было все так просто то я б и не спрашивал


 
MikePetrichenko ©   (2007-01-13 05:04) [8]


> линия произвольной толщины

Да. И еще. Если смущает ее толщина. Представь ее как кучу тонких параллельных линий. Угол наклона у всех будет одинаков.


 
Tirael ©   (2007-01-13 05:05) [9]


>  что тоже не большая проблема, если картинка контрастная.


еще какая контрастная, я ж писал, черное на белом, тока вот алгоритмик бы...


 
Tirael ©   (2007-01-13 05:06) [10]


> Да. И еще. Если смущает ее толщина. Представь ее как кучу
> тонких параллельных линий. Угол наклона у всех будет одинаков.
>


так вот как найти ее? и как не ошибиться. приняв за начало начало одной тонкой линии, а за конец конец какойто другой...


 
MikePetrichenko ©   (2007-01-13 05:07) [11]

Алгоритмик:
1. Открыть файл.
2. Цикл по иксу
3. Цикл по игреку
5. если белый пиксел - к следующему пикселю
6. черный - запомнили координаты в массив
7. идем дальше (но уже не запоминаем координаты) до первого белого.
8. повторить по всей картинке.

Дальще сам. Проще паренной репы.


 
MikePetrichenko ©   (2007-01-13 05:09) [12]


> 7. идем дальше (но уже не запоминаем координаты) до первого
> белого.

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


 
Tirael ©   (2007-01-13 05:09) [13]


> Проще паренной репы.


хех, попробуй нарисовать на листочке... только эту линию для понимания нарисуй как прямоугольник... и прикинь какую фигню ты написал :(


 
Tirael ©   (2007-01-13 05:11) [14]

пардон. поправлюсь, это не линия а отрезок...


 
MikePetrichenko ©   (2007-01-13 05:13) [15]


> хех, попробуй нарисовать на листочке... только эту линию
> для понимания нарисуй как прямоугольник... и прикинь какую
> фигню ты написал :(

Братка, ты тормоз? В школе геометрию учил? какая пофиг разница - линия, прямоугольник или что.
Меняй профессию или в хоз. маг.

P.S. Сколько раз зарекался стажерам помогать. Нет же...


 
Tirael ©   (2007-01-13 05:24) [16]


> Братка, ты тормоз?


нарисуй, мысленно выполни свой алгоритм, а потом сжав зубы сам признай тут что тормоз ты...


 
MikePetrichenko ©   (2007-01-13 05:32) [17]

Чукча - писатель?

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

Берешь листок. Рисуешь на нем ЖИРНУЮ линию.

Далее. Берешь и начиная с левого нижнего угла просматриваешь листок. Как только накнулся на черную точку (по умолчанию считаем что листок белый а линия черная) запоминаешь ее координаты. Если дошел до конца листа но черной точки не нашел, то

Поднимаешься на одну точку вверх. Повторяешь то что написано выше до тех пор пока не достигнешь верхнего края листа.

У тебя получился массив точек, описывающих левую грань твоей линии (четырехугольника).

Далее. Для большей точности. Так как изображение линии будет ступенчатым хорошо бы получить фнукции для данного набора точек. Она будет точно описывать требуемую линию (почему точно - догадайся сам).

Далее. Линия, описываемая данной функцие будет являться гепотенузой прямоугольного треугольника (если из ее произвольной точки опустить перпендикуляр на ось Х). Тебе нужно найти угол между этой гипотенузой и катетом (катет - ось Х).

Если опять не понял - медецина бессильна - в хоз маг.


 
Tirael ©   (2007-01-13 05:42) [18]


> MikePetrichenko ©   (13.01.07 05:32) [17]
> Чукча - писатель?


ты сам решил что ты такой умный или сказал кто? пожалуйста не разводи оофтоп, ибо мне нужен всетаки ответ на вопрос, если ты не знаешь то может другие помогут...

а для особо одаренных, не умеющих рисовать вот сцылочка:

http://img108.imagevenue.com/img.php?image=56053_123_122_454lo.JPG

по твоему алгоритму найдется линия А-В, которая не то что нужно...



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.091 c
6-1157198312
Fugas
2006-09-02 15:58
2007.02.04
POST запрос и PHP


15-1168767111
vasIzmax
2007-01-14 12:31
2007.02.04
Работа в Интернете?


2-1168951673
RomanH
2007-01-16 15:47
2007.02.04
Fast Report для FIBPlus


3-1163647680
petvv
2006-11-16 06:28
2007.02.04
Непонятный глюк при запросе и выводе в отчёт


15-1168866992
Сатир
2007-01-15 16:16
2007.02.04
Создание инсталлятора установки компонент для Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский