Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Початок курсової

with 5 comments

Коли тобі друг присилає лист, в якому написано:

Привіт. У тебе випадково немає проблем із мотивацією та продуктивністю?

це явний знак того, що потрібно сісти, і щось робити.

Тому я вирішив таки взятись за курсову. До цього, я тільки говорив з можливим науковим керівником. А також питав знайомих, які користуються MathCad про його можливості. Знайомі казали що він вміє те що я хочу написати, але показати не змогли. Незважаючи на те, що довго лазили по довідці.

Якщо ви знаєте, як малювати різні тривимірні об’єкти в математичних пакетах – будьте добрі – кидайте посилання на фото з доказами. Ворогів потрібно знати в обличчя.

А тепер пояснюю що я роблю конкретно. Хай ми маємо множину A задану характеристичною функцією \chi. В програмі вона має такий тип:

typedef bool (*XiFunc)(double x,double y, double z);

Завдання – побудувати функцію, яка малює цю множину.

void renderset(XiFunc xi,double delta, double size)

Де delta – точність, а size задає межі множини. Множина A може бути необмеженою, але ми намалюємо не її, а A \cap \{ (x,y,z)| \; |x|<\text{size} \wedge |y|<\text{size} \wedge |z|<\text{size} \}

В ідеалі складність алгоритму побудови мешу має бути не більша за \frac{\|S\|}{\delta^2}, де S – множина всіх зовнішніх точок, а \delta – точність.

Але поки що, мені не терпілось зробити хоч якийсь хеллоу ворлд, тому я зробив через кубічну складність, таку от кубічну (в сенсі O(n^3)) штуку:

Перша множина

Її характеристична функція:

bool sphere(double x,double y, double z)
{
    return ((x*x+y*y+z*z)<1)&&((x*x+y*y)>0.25)&&((x*x+z*z)>0.25)&&((y*y+z*z)>0.25);
}

Або, в математичному записі:
\begin{cases} x^2+y^2+z^2 \leq 1 \\ x^2+y^2 \geq \frac{1}{4}  \\ x^2+z^2 \geq \frac{1}{4} \\ z^2+y^2 \geq \frac{1}{4} \end{cases}

Тепер сідаю придумувати хороший алгоритм.

Advertisements

Written by bunyk

Жовтень 8, 2009 at 13:22

Оприлюднено в Графіка, Кодерство

Tagged with

Відповідей: 5

Subscribe to comments with RSS.

  1. по-перше, не Маткад, а МатЛАБ =)

    по-друге, ось скріни його можливостей. твою фукцію повторити не зміг, бо бракує знань
    http://piccy.info/view/073d0f37f171b693b466fc0198083aa3/
    http://piccy.info/view/d768578919425d68231d710b2ff9133a/

    danbst

    Жовтень 8, 2009 at 22:21

    • Хм. Може мені тоді додати параметр часу?

      bunyk

      Жовтень 8, 2009 at 22:27

      • Анімації він також вміє робити=) щоправда, глючно

        оффтоп. подивись новий проект Аврелія – Авентаріум. почитай коменти на геймдев.ру. він монстр, правда?=)

        danbst

        Жовтень 8, 2009 at 22:50

  2. http://piccy.info/view/073d0f37f171b693b466fc0198083aa3/

    Цікаво, що ж це за функція? Бо такий меш, я бачив в прикладах до книжки Краснова. (http://www.delphilab.ru/content/view/99/46/)

    Крім того, думаю на моєю перевагою над конкурентами буде простота (програмка не буде мати інших функцій). Хоча твоє ставлення до простоти я знаю, не переживай )).

    bunyk

    Жовтень 8, 2009 at 22:44

  3. це ф-ія візуалзіації циліндриками напрямку руху повітряного потоку. Збільш картинку і подивись код

    danbst

    Жовтень 8, 2009 at 22:51


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out / Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out / Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out / Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out / Змінити )

З’єднання з %s

%d блогерам подобається це: