89 const float angle_step,
90 const bool is_large_rotation,
94 const float *axis_final = axis;
96 float angle_final =
angle;
99 axis_final = axis_buffer;
122 for (
float angle_progress = angle_step;
fabsf(angle_progress) <
fabsf(angle_final);
123 angle_progress += angle_step)
130 else if (angle_final !=
angle) {
156 data->is_large_rotation,
168 float angle, start[3], end[3];
177 t->
con.
applyRot(t,
nullptr,
nullptr, axis,
nullptr);
215 const float angle_max =
float(
M_PI * 2000.0);
217 const float angle_sign =
angle < 0.0f ? -1.0f : 1.0f;
226 const bool is_large_rotation)
228 const float angle_sign =
angle < 0.0f ? -1.0f : 1.0f;
231 const float angle_step = angle_sign *
float(0.9 *
M_PI);
233 if (is_large_rotation) {
245 for (
int i = 0; i < tc->data_len; i++, td++) {
258 data.angle_step = angle_step;
259 data.is_large_rotation = is_large_rotation;
279 for (
int i = 0; i < tc->data_len; i++, td++) {
290 pr[0] = cos_angle * uv[0] + sin_angle * uv[1];
291 pr[1] = -sin_angle * uv[0] + cos_angle * uv[1];
294 if (pr[0] < 0.0f || 1.0f < pr[0]) {
297 if (pr[1] < 0.0f || 1.0f < pr[1]) {
307 float angle = vec[0];
309 vec_inside_bounds[0] =
angle;
312 float angle_inside_bounds = vec_inside_bounds[0];
316 const int max_i = 32;
317 for (
int i = 0; i <
max_i; i++) {
319 const float angle_mid = (angle_inside_bounds +
angle) / 2.0f;
320 if (
ELEM(angle_mid, angle_inside_bounds,
angle)) {
324 angle_inside_bounds = angle_mid;
331 vec_inside_bounds[0] = angle_inside_bounds;
332 vec[0] = angle_inside_bounds;
342 t->
con.
applyRot(t,
nullptr,
nullptr, axis_final, &
final);
388 t->
con.
applyRot(t,
nullptr,
nullptr, axis_final,
nullptr);
void BKE_report(ReportList *reports, eReportType type, const char *message)
void mul_m3_v3(const float M[3][3], float r[3])
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void copy_m3_m4(float m1[3][3], const float m2[4][4])
void copy_m4_m3(float m1[4][4], const float m2[3][3])
void transform_pivot_set_m4(float mat[4][4], const float pivot[3])
void axis_angle_normalized_to_mat3(float R[3][3], const float axis[3], float angle)
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void negate_v3_v3(float r[3], const float a[3])
MINLINE void add_v2_v2(float r[2], const float a[2])
float angle_signed_on_axis_v3v3_v3(const float v1[3], const float v2[3], const float axis[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void copy_v3_fl(float r[3], float f)
void BLI_task_parallel_range(int start, int stop, void *userdata, TaskParallelRangeFunc func, const TaskParallelSettings *settings)
BLI_INLINE void BLI_parallel_range_settings_defaults(TaskParallelSettings *settings)
void ED_area_status_text(ScrArea *area, const char *str)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
draw_view in_light_buf[] float
size_t userdata_chunk_size
void(* applyRot)(const TransInfo *t, const TransDataContainer *tc, const TransData *td, float r_axis[3], float *r_angle)
const TransDataContainer * tc
float values_modal_offset[4]
float values_inside_constraints[4]