Blender > Дополнения, скрипты

Лемниската Бернулли

(1/3) > >>

LanuHum:
Не до конца доделал это в своём аддоне, но, поделюсь. Лемниската Бернулли - кривая рисующая бесконечность, то есть, лежачую восьмёрку. Если вытянуть её вершины по оси 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:
Ланухумычь, что это за неведомая хуйня? Ты хотя бы краткую справку напиши, и комменты в своём коде :)

Samovar:
Не ссы, Ланухумычь... двигай телом :)
Open Kids ft. Quest Pistols Show - Круче всех
https://youtu.be/eCkBdziK5RM
Как бы я над тобой не глумился и не стебался... я тебя люблю и уважаю, как уникальную личность и интересного собеседника :)

LanuHum:
Найди параметрическое уравнение лемнискаты и поймёшь, какие переменные можно вставить. Это кривая 2д, но образующиеся в цикле координаты можно смещать по оси z, получая width. Уменьшая в цикле радиус можно получить конусность кривой, а, если повторить это дело не для 360 градусов, то есть, не для одного оборота, то получишь несколько витков.

Samovar:
а зачем это?
я такую же неимоверную неведомую хрень могу запрограммировать на Freebasic, и иных ЯП, включая Си :)  Но какой толк от этого? Это какая-то мегаформула?
Ну дал бы ссылки на инфу, а то вообще нихрена непонятно :)

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии