Текущее время: Ср 27 ноя 2024 7:50

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 9  След.

Насколько хорошо Вы знаете язык программирования С++?
Я проффесиональный разработчик 2%  2%  [ 1 ]
Программирование - моё хобби 20%  20%  [ 10 ]
Я только начинающий 44%  44%  [ 22 ]
А что такое С++? 34%  34%  [ 17 ]
Всего голосов : 50
Автор Сообщение
 Сообщение Вс 23 мар 2008 14:18
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
2 Серж: глянул я на сей калькуль. ИМХО, он далёк от обычных калькулей - это, ИМХО, прога из другой оперы. :roll:
Я же делаю замену Виндусовскому обычному калькулю, который считаю (ИМХО) неудобным. :tongue2: Вот такая у меня цель. Ничего наворачивать лишнего я не собираюсь. :no:

2 Krogoth: никаких больше багов не словил? :roll: Я надесь, тебе не в лом ещё немножко потестать мой калькуль? :god: У тебя отлично получается... :oops:

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Ср 26 мар 2008 17:54
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Этот топик писал(а):
Обмен опытом.
Давненько на форуме не появлялся по причине занятости новым проектом (Японские кроссворды на компе реализовывал :twisted: ). Накопил опыта (по Borland C++ Builder 6) и хочу им поделиццо, если Вам это будет полезно. :yes:
Итак, случилось однажды вот что: сделал пару изменений в коде, и после того, как тыкнул кнопку Run, запустившаяся скомпиллированная прога выдавала разнообразные непонятные глюки. :shock: Но дело оказалось отнюдь не в моей криворукости. :tongue: Я попробовал сделать полную компилляцию (Project -> Build All Projects), и всё стало хорошо. :mrgreen:

1) Так что если после обычной быстрой компилляции (кнопка "Run") творится неопознанное чёрти-чё, делайте полную компилляцию (т.е. выберите в закладке "Project" опцию "Build All Projects"). Возможно проблема в этом.
----------------

Ну, второй интересный нюанс касается рисования 2-мерной графики на форме. Раньше я пользовался простым способом, т.е. рисовал на форме попиксельно таким образом:
Canvas->Pixels[x][y] = RGB(r,g,b);
где "x" и "y"- координаты пикселя на форме, а "r", "g", "b" - интенсивности цветовых составляющих красного, зелёного и синего, соответственно (в диапазоне от 0 до 255).
Несмотря на предупреждения в мануале про тормознутость данного способа, мне было пофигу. :tongue:
Но кроме тормознутости этого способа, у него был ещё один минус: когда окно с нарисованным на нём рисунком из пикселей закрывалось другим окном, пиксели стирались. Так что все громоздкие алгоритмы рисования приходилось записывать в тело стандартной функции "OnPaint" (чтобы она появилась, (2 новички :wink: ), надо в окошке "Object Inspector" в закладке "Events" дважды кликнуть по пустому полю "OnPaint". Коды рисования писать в появившейся автоматически сгенерированной функции. Она будет автоматически запускаться каждый раз, когда Виндус решит, что нужно перерисовать содержимое окна).
Так вот, я изучил человеческий способ вывода графики на форму. :oops: Рисовать нужно не прямо на форме, а на отдельном рисунке, а потом при перерисовке просто отображать этот рисунок. :tongue: Как это делается, щас бибъясню.
а) сначала нужно затоварить объект "холст" для рисования. :smile: Для этого нужно написать такой код в "*.h" в разделе "public":

Graphics::TBitmap *Bitmap1;
где "Bitmap1" - это такое название мы дадим нашему "холсту".

б) теперь нужно описать наш "холст". Это нужно сделать как можно раньше и в "*.cpp". К примеру, в этом месте:

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

Введём туда описание нашего холста, чтобы получилось вот что:

__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Bitmap1 = new Graphics::TBitmap();
Bitmap1->PixelFormat = pf24bit;
Bitmap1->Height = x;
Bitmap1->Width = y;
}

где "х" и "у" - это ширина и высота (в пикселях) нашего холста (подставьте требуемые числа).
Всё, теперь мы можем пользоваться данным священным папирусом в целях рисования. :mrgreen:

в) Рисовать на нём нужно точно также, как и на форме. К примеру, если нужно нарисовать на нём пиксел, то это будет выглядеть так:
Bitmap1->Canvas->Pixels[x][y] = RGB(r,g,b);
Чем хорош Битмап, так это тем, что то, что на нём нарисовано, никак не будет стёрто без Вашего ведома. :supercool:

г) Ну и наконец вывод обрисованного "холста" на форму производится так: вместо того, чтобы писать в вышеописанной функции "OnPaint" сами коды рисования, которые прогонялись бы каждый раз при перерисовке окна, введите туда всего лишь одну строчку кода:
Canvas->Draw(0,0,Bitmap1);
Вывод Битмапа на поверхность формы - простая и безумно-быстрая операция. Поэтому это намного лучше, чем каждый раз прогонять коды рисования. :yes:
----------------

Ну и последний кусочек накопленного опыта, которым я собрался поделиццо, это функции рисования.
На собственном опыте убедился, что вывод линий, прямоугольников и т.д. выполняется намного быстрее, чем если эти фигуры рисовать с помощью пикселей. :tongue:
Итак, прежде чем нарисовать какой-нить "примитив" (так, "по-научному", называются простейшие фигуры), нужно описать цвета "ручки" и "кисточки". "Ручкой" рисуются контуры, "кисточкой" - заполняется внутреннее пространство (внутренняя часть прямоугольника, к примеру).
Чтобы подступиться к настройкам цвета этих двух рисовальных агрегатов, перед рисованием примитивов пишем такой код:
Bitmap1->Canvas->Pen->Color = RGB(r,g,b); //Настройка цвета ручки
Bitmap1->Canvas->Brush->Color = RGB(r,g,b); //Настройка цвета кисточки
Когда цвет определён, можно рисовать примитив:
Линия. Для начала, поставим нашу "ручку" в место, откуда начнём вести линию:
Bitmap1->Canvas->MoveTo(x,y);
где "х" и "у" - координаты этой точки.
Затем проведём саму линию:
Bitmap1->Canvas->LineTo(y,x);
где "х", "у" - координаты точки, до которой мы протянем "ручку", т.е. это координаты конца линии. Если мы захотим провести из этой точки ещё одну линию, то "МуватьТу" нашу ручку снова не нужно, поскольку она осталась торчать там, где закончилась предыдущая линия. :wink:
Насчёт линий есть такие нюансы: последняя точка линии не прорисовывается. Не знаю, зачем так сделано, но надо иметь в виду, что линия выходит чуть короче, чем предполагалось. :tongue:
Кстати, линии рисуются только с помощью "ручки", так что настраивать "кисточку" не обязательно.
Прямоугольник. Тут уже нужно настроить и "кисточку" и "ручку". "Ручкой" будут отрисованы края прямоугольника, "кисточкой" будет заполнена его внутренняя часть.
Рисуется прямоугольник так:
Bitmap1->Canvas->Rectangle(x1,y1,x2,y2);
где "х1", "у1" - координаты верхнего левого угла прямоугольника, а "х2", "у2" - нижнего правого.

Примитивов, конечно, намного больше - я только некоторые описал, т.е. те, что сам юзал. :oops: Также и настроек у них целая куча, хотя я ограничился лишь описанием настройки цвета.
---------------

Пока всё, надеюсь, был хоть чем-то полезен... :oops: :mrgreen:

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Сб 29 мар 2008 21:25
Профиль  
Механоид 3 поколения
Аватара пользователя
Сообщения: 442
Зарегистрирован: Вт 16 май 2006 22:36
Шаман
Калькулятор :supercool: мне нравится.
PS. просьба была с нета по мере решения..


 Сообщение Чт 3 апр 2008 1:32
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
А мне вот эргономика представляется такой.
З.Ы. Не шутка. :mrgreen:


 Сообщение Чт 3 апр 2008 14:59
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Krogoth писал(а):
такой.
Сцылко битый... :roll:

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Чт 3 апр 2008 15:04
Профиль  
Идущий против ветра
Аватара пользователя
Сообщения: 4489
Откуда: Ростов-на-Дону
Зарегистрирован: Ср 5 дек 2007 14:25
Шаман писал(а):
Сцылко битый...

У меня нормально отобразилась картинка.

З,Ы. сорри, за оффтоп.

_________________
“Единственное средство против чумы - честность”.
А. Камю.


 Сообщение Чт 3 апр 2008 15:10
Профиль  
Разработчик идей
Аватара пользователя
Сообщения: 4577
Откуда: Минск, Беларусь
Зарегистрирован: Ср 14 ноя 2007 19:00
Шаман писал(а):
Сцылко битый...
Да,точно, наврал. я. :oops: 2 Krogoth: ты что издеваешься? :laugh:
Krogoth писал(а):
З.Ы. Не шутка.
:shock: О, блин... :sad: Кажысь болезнь прогрессирует... :roll:

_________________
Сообщество креативных механоидов:
aim-fans.ru


 Сообщение Чт 3 апр 2008 16:27
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
2 Шаман
Почему?
Вполне удобно. Имхо. Правда с циферками я перемудрил: их немного в другом порядке надо.)


 Сообщение Чт 3 апр 2008 17:02
Профиль  
Star'ый Craft'ер
Сообщения: 8748
Откуда: Мар-Сара
Зарегистрирован: Пт 7 июл 2006 14:21
Krogoth писал(а):
А мне вот эргономика представляется такой.

Ну бли-и-ин... тут же чёрт ногу сломит... Сели уж эргонимака, то ЭТО Просто аццкий машин!

ЗЫ: я его в школе юзаю уже как 3 года :mrgreen: !

_________________
Не рой другому яму - пусть сам роет!
Ваша свобода - не ваша заслуга, а наша недоработка!


 Сообщение Чт 6 ноя 2008 0:51
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Блин, уже черте-сколько времени бьюсь, никак не могу найти толковый учебник по Kdevelop. Может, кто подскажет?

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


 Сообщение Пт 7 ноя 2008 15:34
Профиль  
Механоид 5 поколения
Аватара пользователя
Сообщения: 1260
Откуда: island Syberia
Зарегистрирован: Ср 10 янв 2007 9:14
проще слей уже какое-нидь простенькое приложеньице в виде сырцов и вкуривай...

_________________
_=S.A.L.K.E.R.=_
"Кто кого еще порвет" - сказала Тузику грелка, надутая до 10 атмосфер
"У нас большие леса. Они способны без остатка поглотить любое воинское формирование" (с)


 Сообщение Пт 7 ноя 2008 16:24
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
2 PA3UJIb
Ох, не проще, ох как не проще. У меня ни времени ни желания нету все это вкуривать. Особенно, если учесть, что там для вывода окошка с текстом Hello World, используется целая куча файлов исходного текста, и как они друг с другом коррелируют совершенно неочевидно без детальных разборок.


 Сообщение Ср 21 янв 2009 17:34
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Razum писал(а):
Да и вообще, как проекция 4Д пространства на плоский экран - это жесть, мы же теряем половину всей информации об объектах этого пространства.
Ну хотя бы так... Ведь при проецировании 3D мы тоже теряем ее. Зато если смоделировать, можно хоть в чем-нибудь разобраться. Представить гиперкуб, уже имея наглядные изображения его проекций, относительно просто, а вот более сложные фигуры!


 Сообщение Ср 21 янв 2009 17:53
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Krogoth писал(а):
Представить гиперкуб, уже имея наглядные изображения его проекций, относительно просто, а вот более сложные фигуры!

А какой в этом смысл? Они будут выглядеть просто в виде некоего множества вершин, соединенных ребрами в виде довольно жуткой сетки, где ничерта не понятно. Кстати, гиперкуб - не самая наглядная фигура в 4Д. Вот четырехмерный аналог тетраэдра - фигура с минимальным количеством вершин, имеющая 4Д объем, имхо, интересней и понятней для изучения с такой точки зрения.


 Сообщение Ср 21 янв 2009 17:56
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
2 Razum
А если с перспективой, "глубиной" цвета и т.д. и т.п.? (Освещением каким-нибудь?) :angel:

Насчет тетраэдра согласен!

Но вообще, я не совсем понимаю как рисовать это. Наверное, придется долго мучиться, чтобы получить хотя бы такую картинку, как на Википедии.


 Сообщение Ср 21 янв 2009 18:25
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Перспектива - всего лишь один из способов проектирования, и ничем принципиально от обычной (забыл, как там она правильно называется) проекции не отличается. А что до освещения - то это, пожалуй, и правда интересно.


 Сообщение Ср 21 янв 2009 21:53
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Пробежался по сайтикам - ничего хорошего... Попадаются программки некоторые, но там никакой правды о четвертой координате. Просто выбирают произвольный вектор и проецируют как-то...
Как я понимаю, все четыре должны находиться в равных правах, и как не разверни их, один сможет заместить другой.

Добавлено спустя 25 минут 48 секунд:

Вдоль OQ (наверное):
Изображение
(?)

Добавлено спустя 1 минуту 54 секунды:

Не, не так...

Добавлено спустя 7 секунд:

Или так... :hm:

Добавлено спустя 1 минуту 56 секунд:

Тьфу. Не будет такого. :neutral:
В 2Д это будет стрелка, в 3D - две перпендикулярные стрелки, в 4Д - две перпендикулярные стрелки и еще одна куда-то вбок.


 Сообщение Ср 21 янв 2009 21:55
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
В двумерном пространстве ты навряд ли сможешь изобразить четыре вектора, ортогональные друг другу, так чтоб не было чувства "что-то не так". Надо либо делать трехмерную модель с анимацией (поворот вокруг центра координат), либо делать несколько проекций этой четверки, думаю, как минимум штуки три надо...


 Сообщение Ср 21 янв 2009 22:01
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Ага, от чувства "что-то не так" тут не денешься.
А все-таки картинка по-моему правильная... Если провести аналогию с 3D, то мы видим плоскость, где между двумя векторами прямой угол. Если рассмотреть 2Д с этой стороны, то там вообще прямая и точка. А для 4Д это уже гиперплоскость будет, и никаких прямых углов в понимании проекции на плоскость соответственно не будет.


 Сообщение Ср 21 янв 2009 22:14
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Ща подумал. Вот рассмотрим тройку ортогональных векторов. Что она из себя представляет? Она из себя представляет три ортогональных базиса двумерного пространства. Рассмотрим двойку векторов - один из этих базисов. Она из себя представляет 2 базиса одномерного пространства. То-есть ортогональный базис, судя из этих примеров, n-мерного пространства представляет собой n ортогональных базисов n-1 мерных пространств. Причем, каждые два базиса в пересечении дают, вероятно, ортогональный базис n-2 мерного пространства. Теперь попробуем, исходя из этих размышлений, представить себе базис четырехмерного пространства.

Добавлено спустя 8 минут 4 секунды:

Значит, у нас четыре тройки векторов. Они задают базисы трехмерных пространств, пересечение любых двух этих пространств должно задавать двумерное пространство. Причем, эти двумерные пространства должны либо иметь нуль в пересечении, либо прямую... Хм... Над последним надо еще много думать...
Какие у нас возможны варианты пересечений четырех троек?
1) 1-2
2) 1-3
3) 1-4
4) 2-3
5) 2-4
6) 3-4
Вот, целых шесть штук. В то время как у трехмерного аналога их только три. Итого, получаем, что в четырехмерном пространстве должно быть возможно существование аж шести плоскостей, взаимно перпендикулярных друг с другом.
Ну что, добавилось понимания? У меня - нет, поэтому надо еще думать...

Добавлено спустя 3 минуты 22 секунды:

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


 Сообщение Ср 21 янв 2009 22:22
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Razum писал(а):
Итого, получаем, что в четырехмерном пространстве должно быть возможно существование аж шести плоскостей, взаимно перпендикулярных друг с другом.
Наверное, потому что OXY, OXZ, OYZ + еще по плоскости, лежащей в OXQ, OYQ, OZQ.

Добавлено спустя 8 минут 15 секунд:

Мда.... :neutral:
Если вектор должны быть равноправными, то должна быть симметрия. Хоть где-нибудь. Почему мы так плохо наблюдаем ее в двумерном и трехмерном? Вдоль одной из координат мы можем провести только одну ось симметрии, а тут сразу три!


Последний раз редактировалось Krogoth Ср 21 янв 2009 22:23, всего редактировалось 1 раз.

 Сообщение Ср 21 янв 2009 22:22
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Бугага, вот блин, совсем забыл линейку. Конечно же могут!


 Сообщение Ср 21 янв 2009 22:24
Профиль  
Техногенный
Сообщения: 8299
Зарегистрирован: Пт 29 дек 2006 17:31
Не, то как нарисовал Кроготь, имхо, не катит по той причине, что вектор Q будет виден, если смотреть со стороны векторов oX и oY, например. Тогда как, например, в трехмерном пространстве мы не увидим с этой стороны ось oZ. По идее, и оQ не должна быть видна.

_________________
thrusting squares through circles


 Сообщение Ср 21 янв 2009 22:31
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
2 Scanner 5
В нашем пространстве постоянная координата Q, но вектор виден должен быть точно так же, как и другие, и точно так же, как будут видны X, Y, Q относительно Z, к примеру.
З.Ы. Наверное! :mrgreen:

Добавлено спустя 3 минуты 31 секунду:

Ааа... Ужас...
Я же совсем неправильно интерпретирую.
С симметрией все нормально ведь. Попросту говоря, 2Д - крестик, 3D - звездочка, 4Д - какая-то извращенная звездочка на основе крестика. :mrgreen:


 Сообщение Ср 21 янв 2009 22:32
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
2 Scanner 5
Вектор Q(если он ортогонален остальным трем) будет виден всегда одинаково, с какой точки трехмерного пространства мы бы не глядели, в противном случае получается, что он может быть разложен по трем векторам нашего трехмерного пространства.


 Сообщение Ср 21 янв 2009 22:33
Профиль  
Техногенный
Сообщения: 8299
Зарегистрирован: Пт 29 дек 2006 17:31
Krogoth писал(а):
4Д - какая-то извращенная звездочка на основе крестика. :mrgreen:

Звезданутый крестик.)

Добавлено спустя 1 минуту 6 секунд:

Razum писал(а):
он может быть разложен по трем векторам нашего трехмерного пространства.

ВОт-вот, это у Кроготя и получилось на картинке... И вообще, искать четвертое измерение в двумерной картинке - несколько бессмысленно, не находите?

_________________
thrusting squares through circles


 Сообщение Ср 21 янв 2009 22:34
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Scanner 5 писал(а):
ВОт-вот, это у Кроготя и получилось на картинке...
Этого у меня не получается.


 Сообщение Ср 21 янв 2009 22:34
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
В принципе, Krogoth очень правильно его нарисовал как точку в начале координат, именно так он и должен проектироваться на трехмерное пространство, и любое его подпространство.


 Сообщение Ср 21 янв 2009 22:34
Профиль  
Скриптизёр
Сообщения: 10646
Откуда: Мариуполь
Зарегистрирован: Пт 13 апр 2007 17:15
Если так судить, то и OY, и OZ можно спроецировать на OX.


 Сообщение Ср 21 янв 2009 22:35
Профиль  
#105d99
Аватара пользователя
Сообщения: 15233
Откуда: Москва, сектор бетонных домов
Зарегистрирован: Пн 20 фев 2006 3:56
Повторяю еще раз, он в виде точки будет выглядеть с любого направления, а не только с того, что на картинке мы видим.


Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 259 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 9  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB