>> найти ошибку... выбери объект "Cube", раскрой сенсор Always (первый из назначенных тобой сенсоров для этого объекта) и нажми на первые две кнопки (с точками сверху и снизу) ...
Коэффициент d = 3, как я понял, это расстояние между кубом и конусом, в этом его смысл?
ЦитироватьКоэффициент d = 3, как я понял, это расстояние между кубом и конусом, в этом его смысл? Вероятно да, а так же это радиус окружности:тогда:x=R*sin(угол в радианах)+ay=R*cos(угол в радианах)+b
Barabashka, по модулю math, поисковик сразу "выплюнул" ссылку https://pythonworld.ru/moduli/modul-math.htmlПо модулю mathutils я нифига не знаю, и не пойму зачем он там вообще в примере... Я туго сам соображаю и в алгебре, и в Python. Просто, что сам понял из примера от Николай Николаев, тем с тобой и поделился, как смог ...нашел про mathutilsA general math utilities library providing Matrix, Vector, Quaternion, Euler and Color classes, written in C for speed.Общая математическая библиотека, предоставляющая классы Matrix, Vector, Quaternion, Euler и Color, написанные на Cи для скорости.видимо она нужна для этой строки в проге:e = r.to_euler()[2]В общем, тебе нужно будет ещё врубиться в матрицы и вектора:http://compgraphics.info/3D/3d_definitions.phphttp://compgraphics.info/3D/3d_affine_transformations.php
import bgeimport mathutilsimport mathscene = bge.logic.getCurrentScene()cube = scene.objects["Cube"]cone = scene.objects["Cone"]d = 3cone.worldOrientation = cube.worldOrientationcone.worldPosition = cube.worldPosition + cube.worldOrientation*mathutils.Vector((0,d,0))
Samovar, а как можно, например для контроля, получить углы в градусах куба и конуса в моём примере? Всё же измерение в градусах привычнее измерения в радианах, которое и представить-то для меня невозможно.
В моём примере слежения если установить некий предел вращению куба, например 30 градусов, по достижению которого конус должен резко изменить свою направленность, т.е. развернуться по какой-то своей оси (например изменить направленность острия), на какой-то угол, то мне думается что потребуются не очень значительные изменения.
import bge # импортируем модуль BGEimport math # импортируем модуль Mathimport mathutils # импортируем модуль mathutilsscene = bge.logic.getCurrentScene() # получить текущую сценуobjList = scene.objects # получить список объектовcube = objList["Cube"] # получить объект Cube из objListcone = objList["Cone"] # получить объект Cone из objListd = 6p = cube.worldPosition # получить положение Cube в мире r = cube.worldOrientation # получить ориентацию Cube в мире e = r.to_euler()[2] # получить ориентацию Cube по оси Zgrad = math.degrees(e)ugol = 180rot = [0,0,math.radians(ugol)]cone.worldPosition = [p[0] - d*math.sin(e), p[1] + d*math.cos(e), p[2]]cone.worldOrientation = rif grad < 0 or grad > 30: cone.applyRotation(rot, True)
... если, что то можно при наличии конкретных вопросов продолжить эту тематику http://blender-3d.ru/forum/index.php/topic,326.msg4308.html#msg4308 ...
... или ты хочешь получить вектор, который на картинке (типа угол падения = углу отражения)? ..