3d форум по Blender

Blender => Другое => Дополнения, скрипты => Тема начата: LanuHum от 16 Июнь 2019, 20:06:54

Название: Лемниската Бернулли
Отправлено: LanuHum от 16 Июнь 2019, 20: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'}
Название: Re: Лемниската Бернулли
Отправлено: Samovar от 18 Июнь 2019, 20:42:06
Ланухумычь, что это за неведомая хуйня? Ты хотя бы краткую справку напиши, и комменты в своём коде :)
Название: Re: Лемниската Бернулли
Отправлено: Samovar от 18 Июнь 2019, 20:59:55
Не ссы, Ланухумычь... двигай телом :)
Open Kids ft. Quest Pistols Show - Круче всех
https://youtu.be/eCkBdziK5RM (http://blender-3d.ru/forum/go.php?url=aHR0cHM6Ly95b3V0dS5iZS9lQ2tCZHppSzVSTQ==)

Как бы я над тобой не глумился и не стебался... я тебя люблю и уважаю, как уникальную личность и интересного собеседника :)
Название: Re: Лемниската Бернулли
Отправлено: LanuHum от 18 Июнь 2019, 22:08:27
Найди параметрическое уравнение лемнискаты и поймёшь, какие переменные можно вставить. Это кривая 2д, но образующиеся в цикле координаты можно смещать по оси z, получая width. Уменьшая в цикле радиус можно получить конусность кривой, а, если повторить это дело не для 360 градусов, то есть, не для одного оборота, то получишь несколько витков.
Название: Re: Лемниската Бернулли
Отправлено: Samovar от 18 Июнь 2019, 22:12:28
а зачем это?
я такую же неимоверную неведомую хрень могу запрограммировать на Freebasic, и иных ЯП, включая Си :)  Но какой толк от этого? Это какая-то мегаформула?
Ну дал бы ссылки на инфу, а то вообще нихрена непонятно :)
Название: Re: Лемниската Бернулли
Отправлено: LanuHum от 18 Июнь 2019, 22:16:46
Косу заплетать эта хрень. Скин применить или в кривую сконвертировать. Я в теме про двойную спираль скриншот же выкладывал. Посмотри, там коса рыжая.
Название: Re: Лемниската Бернулли
Отправлено: LanuHum от 18 Июнь 2019, 22:19:16
Для косы нужно три такие хрени со смещением по вертикали на треть одного сегмента.
Название: Re: Лемниската Бернулли
Отправлено: Samovar от 18 Июнь 2019, 22:21:34
Нихрена себе...то есть, чтобы помочь Настюхе ,ты написал  небольшую прогу?


Вряд ли она это оценит, но я хвалю тебя, хотя и считаю это ненужным в искусстве...
Название: Re: Лемниската Бернулли
Отправлено: LanuHum от 18 Июнь 2019, 22:26:03
Нихрена себе...то есть, чтобы помочь Настюхе ,ты написал  небольшую прогу?
Настюхе это не требовалось, но, я вспомнил, что для тортиков и кренделей это может пригодиться мне самому. Тем более, что в поврее вершины и эджи можно метаболами рисовать, что даёт эффект слипания теста и крема.
Название: Re: Лемниската Бернулли
Отправлено: LanuHum от 18 Июнь 2019, 22:29:16
Цитировать
Вряд ли она это оценит, но я хвалю тебя, хотя и считаю это ненужным в искусстве.
Считаешь, так сиди и считай. 8)
Название: Re: Лемниската Бернулли
Отправлено: Samovar от 18 Июнь 2019, 22:32:17
Тоже мне :)... ладно...