return gp_Lin();
}
- Graphic3d_Vec4d aVPnt1 = aProjInv * Graphic3d_Vec4d (theX, theY, 0.0, 1.0);
+ Graphic3d_Vec4d aVPnt1 = aProjInv * Graphic3d_Vec4d (theX, theY, 0.0, 1.0);
Graphic3d_Vec4d aVPnt2 = aProjInv * Graphic3d_Vec4d (theX, theY, 10.0, 1.0);
aVPnt1 /= aVPnt1.w();
- aVPnt2 /= aVPnt1.w();
+ aVPnt2 /= aVPnt2.w();
gp_Vec aViewDir (aVPnt2.x() - aVPnt1.x(), aVPnt2.y() - aVPnt1.y(), aVPnt2.z() - aVPnt1.z());
--- /dev/null
+puts "============"
+puts "OCC25265"
+puts "============"
+puts ""
+####################################################################################
+# Perspective projection - selecting front point of two.
+# When trying to select front point of two (lying on Z-coordinate) in a perspective
+# view, the back one is snapped and selected.
+####################################################################################
+
+set select_x 204
+set select_y 204
+
+vinit View1
+vsetdispmode 1
+vcamera -persp
+
+# Draw grid of points 7x7.
+set j 0
+for {set x 0} {$x<7} {incr x} {
+ for {set y 0} {$y<7} {incr y} {
+ vpoint $j $x $y 10
+ incr j
+ }
+}
+ for {set x 0} {$x<7} {incr x} {
+ for {set y 0} {$y<7} {incr y} {
+ vpoint $j $x $y 0
+ incr j
+ }
+}
+
+# Prepare view.
+vtop
+vfit
+
+vselect $select_x $select_y
+
+set stat 0
+set result [vstate]
+set newlist {}
+set ref_selected {24}
+set asplit [split $result "\n"]
+for {set i 0} {$i < [llength $ref_selected]} {incr i} {
+ lappend newlist [lindex [lindex $asplit $i] 0]
+}
+set newsorted [lsort $newlist]
+set refsorted [lsort $ref_selected]
+for {set i 0} {$i < [llength $refsorted]} {incr i} {
+ if {[lindex $refsorted $i] != [lindex $newsorted $i]} {
+ set stat 1
+ break
+ }
+}
+
+if {$stat == 1} {
+ puts "Error : Perspective selection is broken."
+}
+
+# Dump view.
+set scale 48.20
+set up_x -0.09
+set up_y 0.94
+set up_z -0.33
+set at_x 3.03
+set at_y 2.70
+set at_z 5.10
+set eye_x 16.40
+set eye_y 10.98
+set eye_z 24.59
+
+vviewparams -scale $scale -up $up_x $up_y $up_z -at $at_x $at_y $at_z -eye $eye_x $eye_y $eye_z
+
+set only_screen 1
\ No newline at end of file