Russian Qt Forum
Май 15, 2024, 12:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Относительное расстояние до центра 8-угольника  (Прочитано 15266 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Январь 17, 2012, 19:51 »

Задача еще не решена что ли?
Нет, вот жду прынца (на белом коне) который мне решит  Улыбающийся

Хотелось бы увидеть хорошую технику программирования - но, увы, пока только "воспоминания о будущем" (QRegion) + Ваш огрызок из гугла (который непонятно к чему).
Записан
Tonal
Гость
« Ответ #16 : Январь 18, 2012, 10:31 »

Да лехко:
Код
Haskell
-- Типы данных и их синонимы
import Data.List
 
data Point = Point {getx, gety :: Float}
type Octagon = [Point]
type RelID = Float
 
-- Определяем Epsilon
epsilon = 1e-6
 
-- Вспомогательные простейшие функции
sign :: Float -> Int
getAngle :: Point -> Float
getDistPnt :: Point -> Point -> Float
calcPntRelID :: Point -> Point -> RelID
calcSectRelID :: (Point, Point) -> Point -> RelID
 
 
calcRelID :: Octagon -> Point -> RelID
calcRelID oct pnt
 | getDistPnt (Point 0 0) pnt < epsilon = 0
 | anglePnt2Corner beg < epsilon = calcPntRelID beg pnt
 | otherwise = calcSectRelID (beg, end) pnt
 where
   pnt_angle = getAngle pnt
   anglePnt2Corner corn = abs (pnt_angle - getAngle corn)
   cmpByAngleNear apnt bpnt =
     compare (anglePnt2Corner apnt) $ anglePnt2Corner bpnt
   nearestCorns = sortBy cmpByAngleNear oct
   beg = head nearestCorns
   begAngle = sign (pnt_angle - getAngle beg)
   testSign x = sign (pnt_angle - getAngle x) /= begAngle
   end = head . dropWhile testSign . tail $ nearestCorns
 
sign x = undefined
getAngle pnt = undefined
getDistPnt apnt bpnt = undefined
calcPntRelID apnt bpnt = undefined
calcSectRelID (beg, end) pnt = undefined
 
Надеюсь простейшие функции сам реализуеш. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Январь 19, 2012, 14:29 »

Надеюсь простейшие функции сам реализуеш. Улыбающийся
Та я даже не знаю на каком вражеском языке Вы все это написали Улыбающийся  Можно на "С", в крайнем случае на С++ ? Спасибо
Записан
Tonal
Гость
« Ответ #18 : Январь 19, 2012, 15:45 »

Там жа сверху написано: Haskell.
Вроде всё вполне тривиально. Сложностей никаких не использовал, за ненадобностью. Улыбающийся
Но на С++ переводить - лениво. Слишком много кода получается.
Так что сам тренируйся. Улыбающийся
Записан
andrew.k
Гость
« Ответ #19 : Январь 19, 2012, 16:05 »

Там жа сверху написано: Haskell.
Вроде всё вполне тривиально. Сложностей никаких не использовал, за ненадобностью. Улыбающийся
Но на С++ переводить - лениво. Слишком много кода получается.
Так что сам тренируйся. Улыбающийся
Уже ведь сказано было, что нужно на блюдечке)
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #20 : Январь 19, 2012, 16:27 »

Там жа сверху написано: Haskell.
То есть Вы считаете что для решения такой задачи необходимо привлекать специализированный язык (со всеми вытекающими)? Смело однако
Но на С++ переводить - лениво. Слишком много кода получается.
Так что сам тренируйся. Улыбающийся
А, ну понятно - эрудиту интересно изучать, но не делать  Улыбающийся

Уже ведь сказано было, что нужно на блюдечке)
Ну а почему бы и нет? Qt классы у Вас есть, в чем загвоздка?
Записан
mutineer
Гость
« Ответ #21 : Январь 19, 2012, 16:30 »

То есть Вы считаете что для решения такой задачи необходимо привлекать специализированный язык (со всеми вытекающими)? Смело однако

Хаскель специализированный? На чем? Язык общего назначения же
Записан
Tonal
Гость
« Ответ #22 : Январь 20, 2012, 11:43 »

На Haskell-е алгоритм выразился наиболее абстрактно, компактно и понятно.
А вот перевод в С/С++ - это уже довольно много не вполне очевидного кода.
К тому же для оптимальности его ещё следует затачить/подогнать под окружение.
Понятно, что всё это требует много времени и знания окружения.
У меня нет ни первого ни второго. Да и интереса большого к этому нет.
Так что пусть этим занимается тот, кому это зачем-то нужно. Улыбающийся

П. С. По поводу языков - ИМХО профессиональный программист должен уметь читать/понимать основные языки программирования разных направлений и большинство языков в основном для него направлении.

П. П. С. По поводу классов Qt. Для подобных задачь лучше таки использовать специализированные библиотеки векторной графики, например AGG, или писать своё. У Qt несколько другие задачи, поэтому соответствующие классы, входящие в её состав заточены под её нужды и несколько тяжелы/неуклюжи в этой области. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #23 : Январь 20, 2012, 15:58 »

На Haskell-е алгоритм выразился наиболее абстрактно, компактно и понятно.
А вот перевод в С/С++ - это уже довольно много не вполне очевидного кода.
Странно.. а у меня почему-то на простом С получилось заметно короче чем на козырном языке  Улыбающийся.

А вообще Ваши посты прочитал с удовольствием. Заливаете Вы умело, творчески  Улыбающийся
Записан
Tonal
Гость
« Ответ #24 : Январь 21, 2012, 09:11 »

Странно.. а у меня почему-то на простом С получилось заметно короче чем на козырном языке  Улыбающийся.
И чего ты тогда здесь плачишся и конючишь код, ежели уже написал?
А, на счёт краткости - выкладывай - сравним. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #25 : Январь 21, 2012, 13:32 »

И чего ты тогда здесь плачишся и конючишь код,
Неправда, я предложил обсудить как написать это место короче и с лучшей скоростью выполнения  (см пост #10)

А, на счёт краткости - выкладывай - сравним. Улыбающийся
Охотно выложу свой как только увижу хоть какой-то другой, а иначе "выборы из одного кандидата" Улыбающийся 
Записан
Tonal
Гость
« Ответ #26 : Январь 23, 2012, 08:30 »

И чего ты тогда здесь плачишся и конючишь код,
Неправда, я предложил обсудить как написать это место короче и с лучшей скоростью выполнения  (см пост #10)
Десятый пост в этом топике написал kambala.
После него есть твой, с предложением обсудить как это сделать, а после:
Задача еще не решена что ли?
Нет, вот жду прынца (на белом коне) который мне решит  Улыбающийся
Из которого следует, что решения и кода у тебя нет.
В следующем посте ты всё ещё канючишь, или это уже «предложил обсудить...»?
И только в предпоследнем сообщении сознаёшся что код у тебя таки есть, но опять же никаких предложений обсудить «краткость и скорость» там нет.
Есть они в следующем моём посте.

«Мне кажется, кто-то врёт» © Сова.
А, на счёт краткости - выкладывай - сравним. Улыбающийся
Охотно выложу свой как только увижу хоть какой-то другой, а иначе "выборы из одного кандидата" Улыбающийся 
Свой код я выложил. Там не достаёт только примитивных функций и примера вызова.
Так что выборы таки из 2х. Ты же утверждаешь что «у меня почему-то на простом С получилось заметно короче».
Вот давай и сравним размеры, а то опять какое-то голословное утверждение с твоей стороны.
Так и репутацию троля получить не долго. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #27 : Январь 23, 2012, 09:33 »

Свой код я выложил.
Ваш код за рамками обсуждения. Вовлекать в С++ проект  др язык для решения задачи типа "лаба первокурсника" - это просто шутка, не более того. Так что выкладываем реализацию на С/C++ а не прячемся за огромный багаж знаний  Улыбающийся

«Мне кажется, кто-то врёт» © Сова.
Если © то наверное правильно "Сава"  Улыбающийся
Записан
Tonal
Гость
« Ответ #28 : Январь 23, 2012, 11:19 »

Свой код я выложил.
Ваш код за рамками обсуждения. Вовлекать в С++ проект  др язык для решения задачи типа "лаба первокурсника" - это просто шутка, не более того. Так что выкладываем реализацию на С/C++ а не прячемся за огромный багаж знаний  Улыбающийся
До того, как я код выложил, никаких ограничений на язык не было озвучено. Так что мой код вполне в рамках обсуждения. Улыбающийся

Кроме того, ты утверждал что «у меня почему-то на простом С получилось заметно короче чем на козырном языке».
Вот я и прошу код - посмотреть на сиё чудо. Улыбающийся

Иначе считаем утверждение голословными.
Ну и к автору высказывания понятно какое отношение. Улыбающийся

«Мне кажется, кто-то врёт» © Сова.
Если © то наверное правильно "Сава"  Улыбающийся
Тут согласен, уел. Улыбающийся
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.083 секунд. Запросов: 22.