#povray
#povray
Вопрос:
Используя POV-Ray для Windows версии 3.7, я написал скрипт для визуализации полупрозрачных кубов, представляющих химические элементы:
#declare H=difference {
box {
<-1, -1, 0>, <1, 1, 0.5>
material {
M_Glass
}
}
text {
ttf "ariblk.ttf", element,
0.2, // depth
0 // spacing
texture {
pigment { color <0,0,0,1> }
}
scale 1.3
translate <-0.8, -0.45, -0.1>
}
}
где element
— строка. Теперь обозначения химических элементов могут иметь длину в один символ (H … водород), два символа (At … астатин) или три символа (неназванные новые открытия). Я написал цикл анимации для перебора всех порядковых номеров элементов, и мне уже удалось отобразить 1..118 за один прогон.
Метка должна быть переведена и масштабирована внутри куба в направлении x на основе коэффициента длины строки. Хотя для перевода, выравнивания по центру или измерения фактической ограничивающей рамки сначала может сработать, я все же хотел бы иметь возможность выразить что-то подобное для масштабирования:
#switch(string_length(element))
#case(1)
scale 0.9
#break
#case(2)
scale 0.72
#break
#case(3)
scale 0.62
#break
#end
Но такой функции нет string_length
. В документации об этом не упоминается.
Существует ли скалярная функция или макрос длины строки в POV-Ray? Или обходной путь, который не означает писать 118 случаев?