Автор Тема: Лемниската Бернулли  (Прочитано 270 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн LanuHum

  • Житель
Лемниската Бернулли
« : 16 Июнь 2019, 19:06:54 »
Не до конца доделал это в своём аддоне, но, поделюсь. Лемниската Бернулли - кривая рисующая бесконечность, то есть, лежачую восьмёрку. Если вытянуть её вершины по оси Z, то можно получить сегмент косы (про волосы). У меня получается меш из вершин, соединённых эджами.
class OBJECT_OT_mesh_lemniscat_add(Operator):
    bl_idname = "object.mesh_lemniscat_add"
    bl_label = "Lemniskat Bernoulli"
    bl_options = {'REGISTER', 'UNDO'}

    number = IntProperty(name = "Number",
                    description = "",
                    default = 1, min = 1)

    resolution = IntProperty(name = "Resolution",
                    description = "",
                    default = 10, min = 1, max = 100)

    width = FloatProperty(name = "Width",
                    description = "",
                    default = 0.1, min = 0.0)

    conical = FloatProperty(name = "Conical",
                    description = "",step=1,
                    default = 0.0, min = 0.0)

    def draw(self,context):
        layout = self.layout
        layout.prop(self,"number")
        layout.prop(self,"resolution")
        layout.prop(self,"width")
        layout.prop(self,"conical")

    def execute(self, context):
        props = self.properties
        n = props.number
        res = props.resolution
        w = props.width
        c = props.conical
        verts = []
        edges = []
        faces = []
        x,y,z = 0,0,0
        alpha = 1
        val = 36*n
        for i in range(0,val):
            t = radians(i*10)
            x = alpha * sqrt(2) * cos(t) / (sin(t)**2 + 1)
            y = alpha * sqrt(2) * cos(t) * sin(t) / (sin(t)**2 + 1)
            verts.append([x,y,z])
            z+=w
            alpha-=c
        for i,v in enumerate(verts):
            if i != 0:
                edges.append((i-1,i))
        obj = create_mesh_object(context, verts, edges, faces, "Leminiscate")
        return {'FINISHED'}

Оффлайн Samovar

  • Житель
Re: Лемниската Бернулли
« Ответ #1 : 18 Июнь 2019, 19:42:06 »
Ланухумычь, что это за неведомая хуйня? Ты хотя бы краткую справку напиши, и комменты в своём коде :)

Оффлайн Samovar

  • Житель
Re: Лемниската Бернулли
« Ответ #2 : 18 Июнь 2019, 19:59:55 »
Не ссы, Ланухумычь... двигай телом :)
Open Kids ft. Quest Pistols Show - Круче всех
https://youtu.be/eCkBdziK5RM

Как бы я над тобой не глумился и не стебался... я тебя люблю и уважаю, как уникальную личность и интересного собеседника :)

Оффлайн LanuHum

  • Житель
Re: Лемниската Бернулли
« Ответ #3 : 18 Июнь 2019, 21:08:27 »
Найди параметрическое уравнение лемнискаты и поймёшь, какие переменные можно вставить. Это кривая 2д, но образующиеся в цикле координаты можно смещать по оси z, получая width. Уменьшая в цикле радиус можно получить конусность кривой, а, если повторить это дело не для 360 градусов, то есть, не для одного оборота, то получишь несколько витков.

Оффлайн Samovar

  • Житель
Re: Лемниската Бернулли
« Ответ #4 : 18 Июнь 2019, 21:12:28 »
а зачем это?
я такую же неимоверную неведомую хрень могу запрограммировать на Freebasic, и иных ЯП, включая Си :)  Но какой толк от этого? Это какая-то мегаформула?
Ну дал бы ссылки на инфу, а то вообще нихрена непонятно :)

Оффлайн LanuHum

  • Житель
Re: Лемниската Бернулли
« Ответ #5 : 18 Июнь 2019, 21:16:46 »
Косу заплетать эта хрень. Скин применить или в кривую сконвертировать. Я в теме про двойную спираль скриншот же выкладывал. Посмотри, там коса рыжая.

Оффлайн LanuHum

  • Житель
Re: Лемниската Бернулли
« Ответ #6 : 18 Июнь 2019, 21:19:16 »
Для косы нужно три такие хрени со смещением по вертикали на треть одного сегмента.

Оффлайн Samovar

  • Житель
Re: Лемниската Бернулли
« Ответ #7 : 18 Июнь 2019, 21:21:34 »
Нихрена себе...то есть, чтобы помочь Настюхе ,ты написал  небольшую прогу?


Вряд ли она это оценит, но я хвалю тебя, хотя и считаю это ненужным в искусстве...

Оффлайн LanuHum

  • Житель
Re: Лемниската Бернулли
« Ответ #8 : 18 Июнь 2019, 21:26:03 »
Нихрена себе...то есть, чтобы помочь Настюхе ,ты написал  небольшую прогу?
Настюхе это не требовалось, но, я вспомнил, что для тортиков и кренделей это может пригодиться мне самому. Тем более, что в поврее вершины и эджи можно метаболами рисовать, что даёт эффект слипания теста и крема.

Оффлайн LanuHum

  • Житель
Re: Лемниската Бернулли
« Ответ #9 : 18 Июнь 2019, 21:29:16 »
Цитировать
Вряд ли она это оценит, но я хвалю тебя, хотя и считаю это ненужным в искусстве.
Считаешь, так сиди и считай. 8)

Оффлайн Samovar

  • Житель
Re: Лемниската Бернулли
« Ответ #10 : 18 Июнь 2019, 21:32:17 »
Тоже мне :)... ладно...

 


* По форуму

* Последние вложения

Aulis_AS11-40-5922.jpg
Скачано: 57
Автор: Samovar

Скачано: 51
Автор: Анастасия111

Скачано: 47
Автор: Анастасия111
csg_test.jpg
Скачано: 49
Автор: LanuHum
inkscape.jpg
Скачано: 48
Автор: LanuHum