Белый "холст"
1) Представьте что на "холсте" нарисован куб (трёхмерный), чёрным цветом
2) Пользователь кликает на области ограниченной кубом (т.е. кликает внутри куба по одной из его граней, мы запоминаем координату X и Y у мышки)
? Нужно получить координаты всех четырёх углов грани, по которой был произведён click?
Вот так:
[attachmentid=2732]
Canvas это 2D рисование, а тебе нужно 3D, гляди в сторну OpenGL или DirectX
Canvas это 2D рисование, а тебе нужно 3D, гляди в сторну OpenGL или DirectX
Может это только пример про куб...
Белый "холст"
...
1.Создаешь фигуры (shape) на каждую грань
2.Делаешь ответом на событие OnClick вывод координат этих фигур...
Белый "холст"
1) Представьте что на "холсте" нарисован куб (трёхмерный), чёрным цветом
2) Пользователь кликает на области ограниченной кубом (т.е. кликает внутри куба по одной из его граней, мы запоминаем координату X и Y у мышки)
? Нужно получить координаты всех четырёх углов грани, по которой был произведён click?
Вот так:
[attachmentid=2732]
Нфига не понял, как можно получить координаты абстрактной фигуры? Если она не абстрактна, то они должны бать тебе извстны, иначе по клику пользователя даже эйнштейн не найдет углы
Видимо я не всё расписал:
1) Картинка в виде куба уже есть, т.е. уже нарисована, ну например допустим что в image.picture вы загрузили правильный BitMap, в котором на белом фоне имеется кубик (нарисованный в изометрии, всмыслк трёхмерный)...
2) Теперь нужно узнать координаты углов (точки на bitmap'e которые и являются углами куба)
Задача такая (может так проще понять будет): на image.picure имеется картинка в которой нарисованы большее количество параллелепипидов (я их не рисую они уже кем то созданы до меня), нужно подсветить ребро, внутри которого находиться указатель мыши (это я и сам могу, а вот) и вывести координаты его углов (X,Y)...
Ты хочешь написать код по распознанию, мало того, что изображения, но еще чтобы и края находил?
Хех, обычай нейронную сеть
Ты хочешь написать код по распознанию, мало того, что изображения, но еще чтобы и края находил?
Хех, обычай нейронную сеть
Какие нейронные сети. НС применяют, чтобы решать многоусловные задачи. В данном случае идёт более простое распознание (ещё проще, чем распознавание букв - которое легко производится без нейронных сетей). Просто не всегда нужно искать решение в программировании, иногда неплохо воспользоваться чисто условиями логики
...Задача такая (может так проще понять будет): на image.picure имеется картинка в которой нарисованы большее количество параллелепипидов (я их не рисую они уже кем то созданы до меня), нужно подсветить ребро, внутри которого находиться указатель мыши (это я и сам могу, а вот) и вывести координаты его углов (X,Y)...
Если я правильно понял, то ты подсвечиваешь путём замены цвета черных точек, касающихся белой грани. Тогда (раз уж всё равно все точки проходятся) - у угловой точки соседние точки расположены под углом (не 180), а у точек линии соседние точки под развёрнутым углом (как бы линия не располагалась):
[attachmentid=2762]
Если умеешь пользоваться косинусами/синусами, то у тебя всё получится. Хотя если линии толщиной в одну точку, то можно использовать вот что:
[attachmentid=2763]
в этих случаях красная точка является точкой линии (она тебе не нужна), в противном случае - она точка угла.
зы: извеняюсь, если рисунки неочень, но фотошоп было лень запускать B)
...
Нет - так как линии могут быть широкими или иметь угол очень близкий к 0 или к 90
...
Тогда предварительно нужно сделать линии тоньше (в отдельном канвасе, чтобы пользователь не видел).
А холст монотонный, т.е. картинка нормального качества (без артефактов)?
ДА!
ДА!
У меня есть идейка, если получится реализовать, напишу
Тогда предварительно нужно сделать линии тоньше (в отдельном канвасе, чтобы пользователь не видел).
А как я тебе уменьшу толщину линий?
Как закрасить область ограниченную линиями (как в paint)?<br /> Может есть у кого готовые функции...
Как закрасить область ограниченную линиями (как в paint)?<br /> Может есть у кого готовые функции...
Саша у меня где-то был такой код, если найду то напишу.
ЦитатаКак закрасить область ограниченную линиями (как в paint)?
Может есть у кого готовые функции...
ты чего? такая процедура есть давно -
FloodFill(X,Y:integer;Color:TColor;FillStyle:TFillStyle);</p> <p>TFillStyle = (fsBorder,fsSurface)
вот на всякий случай пример с исходником:[attachmentid=2960]
левой рисуешь, правой закрашиваешь
может проще через классы это реализвать?...
[code]FloodFill(X,Y:integer;Color:TColor;FillStyle:TFillStyle);
Спасибо...
P/S/ Мне просто интересно (описанной ниже ситуации у меня не возникает, так для общего развития): А что если внутреннее, подлежащее закрашиванию, пространство состоит из смеси цветов: скажем R (+ - 10) G (+ - 10) B (+ - 10)?
Если я правильно понял - ты хочешь делать, как в фотошопе, чтобы приближенные цвета тоже закрашивались... Если да, то тебе надо создать набор схожих цветов, а при закрашивании самому двигаться по всем точкам удовлетворяющим условию цвета (во все стороны) и перекрашивать их в один (тут рекурсия поможет).