Русский
Русский
English
Статистика
Реклама

Матиматика, Красота, Любовь история одной валентинки


Было время был я влюблен и было мало денег. Хотелось сделать какой-то необычный подарок девушки на день святого валентина и этим подарком стала вот такая программа работу которой вы видите на первом видео. Скоро 14 февраля и может кого-то из вас эта статья вдохновит сделать свою 3D красоту для любимой девушки.

Ну или можете просто взять исходники этой и чуть чуть переделать. Да что уж там, если вашу любимую зовут Юля то вам вообще повезло. Код это был написан лет 8 назад и там просто глаза могут вытечь от ужаса. Я тогда был прям совсем начинающим джуном поэтому морально подготовьтесь прежде чем смотреть исходники.

Собственно говоря сначала у меня была программа которая просто запускала на видеокарте через вычислительный шейдер ураган из звезд:


Сделана она была с помощью SharpDX и шейдеры написаны на HLSL.


Потом я решил переделать ее в программу которая собирает звезды в 3D сердце с именем. Рисовал все с помощью кривых Безье. Использовал более удобный MonoGame


Если вам нужно сменить имя то редактировать вам надо вот этот участок кода:

  /// <summary>        /// Метод для рисования буквы "Ю".        /// </summary>        private void Ju()        { //0 - 50 000            Lane l;         //Индекс в массиве вертексов с которого начнем            l.arStart = 0;        //Индекс в массиве вертексов на котором закончим.             l.arEnd = 12000;           //Начало линии            l.start = new Vector2(-80, -25);          //Центр линии            l.middl = new Vector2(-65, -15);           //Конец линии            l.end = new Vector2(-50, 25);           //Нарисовать линию из вершин (вертексов Vector3)            LaneBezier(l);            l.arStart = 12000;            l.arEnd = 36000;            l.start = new Vector2(-50, -25);            l.middl = new Vector2(-50, 15);            l.end = new Vector2(0, 25);            LaneBezier(l);            l.arStart = 36000;            l.arEnd = 48000;            l.start = new Vector2(-50, -25);            l.middl = new Vector2(30, -5);            l.end = new Vector2(0, 25);            LaneBezier(l);            l.arStart = 48000;            l.arEnd = 50000;            l.start = new Vector2(-70, -5);            l.middl = new Vector2(-50, -10);            l.end = new Vector2(-30, 10);            LaneBezier(l);        }        /// <summary>        /// Метод для рисования буквы "л".        /// </summary>        void Li()        {            //50 00 75 000            Lane l;            l.arStart = 50000;            l.arEnd = 65000;            l.start = new Vector2(0, -10);            l.middl = new Vector2(15, -30);            l.end = new Vector2(40, 15);            LaneBezier(l);            l.arStart = 65000;            l.arEnd = 75000;            l.start = new Vector2(40, 15);            l.middl = new Vector2(40, -30);            l.end = new Vector2(50, -10);            LaneBezier(l);        }        /// <summary>        /// Метод для рисования буквы "я".        /// </summary>        void Ya()        {            // 75 000 99999            Lane l;            l.arStart = 75000;            l.arEnd = 80000;            l.start = new Vector2(50, -10);            l.middl = new Vector2(65, -30);            l.end = new Vector2(80, 0);            LaneBezier(l);            l.arStart = 80000;            l.arEnd = 85000;            l.start = new Vector2(80, 0);            l.middl = new Vector2(70, 20);            l.end = new Vector2(60, 0);            LaneBezier(l);            l.arStart = 85000;            l.arEnd = 90000;            l.start = new Vector2(60, 0);            l.middl = new Vector2(75, -20);            l.end = new Vector2(85, 0);            LaneBezier(l);            l.arStart = 90000;            l.arEnd = 95000;            l.start = new Vector2(80, 0);            l.middl = new Vector2(70, -30);            l.end = new Vector2(90, -15);            LaneBezier(l);        }        /// <summary>        /// Метод для рисования сердца        /// </summary>        void Heart()        {            Lane l;            l.arStart = 95000;            l.arEnd = 115000;            l.start = new Vector2(0, 60);            l.middl = new Vector2(280, 180);            l.end = new Vector2(0, -150);            LaneBezier(l);            l.arStart = 115000;            l.arEnd = 135000;            l.start = new Vector2(0, 60);            l.middl = new Vector2(-280, 180);            l.end = new Vector2(0, -150);            LaneBezier(l);        }

Добра и любви вам. У меня с той девушкой не сложилось. Надеюсь, вам такая валентинка принесет счастье.
Источник: habr.com
К списку статей
Опубликовано: 11.02.2021 00:06:26
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Net

Работа с 3d-графикой

C

Diy или сделай сам

3d

Работа с графикой

Истории

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru