diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-08-31 06:06:23 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-08-31 06:06:23 +0400 |
commit | 11c988ba00f2991850050ff4c2e3cb34c2546047 (patch) | |
tree | e61413337f5e8b92284569f06b553516b2675536 /source/blender/editors/space_view3d/view3d_project.c | |
parent | 29f6616d609fbd92cf313b0fdec555c2fcb4ede0 (diff) |
Simplify line/plane intersection, add line_plane_factor_v3().
Remove no_flip option for isect_line_plane_v3(), its quite specific and only used for ED_view3d_win_to_3d().
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_project.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_project.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/editors/space_view3d/view3d_project.c b/source/blender/editors/space_view3d/view3d_project.c index 5e71913ea4a..28ffdea0e6c 100644 --- a/source/blender/editors/space_view3d/view3d_project.c +++ b/source/blender/editors/space_view3d/view3d_project.c @@ -405,15 +405,15 @@ void ED_view3d_win_to_3d(const ARegion *ar, const float depth_pt[3], const float float line_end[3]; if (rv3d->is_persp) { - float mousevec[3]; + float mousevec[3], lambda; copy_v3_v3(line_sta, rv3d->viewinv[3]); ED_view3d_win_to_vector(ar, mval, mousevec); add_v3_v3v3(line_end, line_sta, mousevec); - if (isect_line_plane_v3(out, line_sta, line_end, depth_pt, rv3d->viewinv[2], true) == 0) { - /* highly unlikely to ever happen, mouse vector parallel with view plane */ - zero_v3(out); - } + /* note, we could use isect_line_plane_v3() however we want the intersection to be infront of the + * view no matter what, so apply the unsigned factor instead */ + lambda = line_plane_factor_v3(depth_pt, rv3d->viewinv[2], line_sta, line_end); + interp_v3_v3v3(out, line_sta, line_end, fabsf(lambda)); } else { float dx = (2.0f * mval[0] / (float)ar->winx) - 1.0f; |