Blender > Дополнения, скрипты
Лемниската Бернулли
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, и иных ЯП, включая Си :) Но какой толк от этого? Это какая-то мегаформула?
Ну дал бы ссылки на инфу, а то вообще нихрена непонятно :)
Навигация
Перейти к полной версии