1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-16 10:08:36 +03:00

0026357: Visualization - Panning zooms view if aspect ratio > 1

This commit is contained in:
apl 2015-06-19 15:15:11 +03:00 committed by abv
parent cf4520ebc6
commit 9f87ad8c86
2 changed files with 63 additions and 2 deletions

View File

@ -563,8 +563,18 @@ gp_Pnt Graphic3d_Camera::ConvertView2World (const gp_Pnt& thePnt) const
gp_XYZ Graphic3d_Camera::ViewDimensions() const
{
// view plane dimensions
Standard_Real aSizeY = IsOrthographic() ? myScale : (2.0 * Distance() * Tan (DTR_HALF * myFOVy));
Standard_Real aSizeX = myAspect * aSizeY;
Standard_Real aSize = IsOrthographic() ? myScale : (2.0 * Distance() * Tan (DTR_HALF * myFOVy));
Standard_Real aSizeX, aSizeY;
if (myAspect > 1.0)
{
aSizeX = aSize * myAspect;
aSizeY = aSize;
}
else
{
aSizeX = aSize;
aSizeY = aSize / myAspect;
}
// and frustum depth
return gp_XYZ (aSizeX, aSizeY, myZFar - myZNear);

51
tests/bugs/vis/bug26357 Normal file
View File

@ -0,0 +1,51 @@
puts "============"
puts "CR26357"
puts "============"
puts ""
#########################################################################
puts "Panning regression after fixing 0026082"
#########################################################################
box b 100 100 100
vinit View1 w=400 h=400
vinit View2 w=200 h=400
vinit View3 w=400 h=200
vclear
vaxo
vdisplay b
# Test panning with aspect ratio 1:1
vactivate View1
vfit
vpan 200 0
vmoveto 399 200
checkcolor 399 200 0 1 1
vpan -200 0
vmoveto 200 200
checkcolor 200 200 0 1 1
vdump ${imagedir}/${casename}_1.png
# Test panning with aspect ratio 1:2
vactivate View2
vfit
vpan 100 0
vmoveto 199 100
checkcolor 199 100 0 1 1
vpan -100 0
vmoveto 100 100
checkcolor 100 100 0 1 1
vdump ${imagedir}/${casename}_2.png
# Test panning with aspect ratio 2:1
vactivate View3
vfit
vpan 200 0
vmoveto 399 100
checkcolor 399 100 0 1 1
vpan -200 0
vmoveto 200 100
checkcolor 200 100 0 1 1
vdump ${imagedir}/${casename}_3.png