summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/base/three_surface.asy
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-05-18 21:58:51 +0000
committerKarl Berry <karl@freefriends.org>2013-05-18 21:58:51 +0000
commit1b4cb2401e932a47c4e736a0197d22c7797b58ad (patch)
tree8e478eee9868a06467931e053ec06658ae3a8e06 /Build/source/utils/asymptote/base/three_surface.asy
parent93dcab8a877f998aafe2bef5e59b7c6ea2f7f434 (diff)
asy 2.22 sources
git-svn-id: svn://tug.org/texlive/trunk@30552 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/base/three_surface.asy')
-rw-r--r--Build/source/utils/asymptote/base/three_surface.asy9
1 files changed, 6 insertions, 3 deletions
diff --git a/Build/source/utils/asymptote/base/three_surface.asy b/Build/source/utils/asymptote/base/three_surface.asy
index 0ef497f6d56..85d32b08eb6 100644
--- a/Build/source/utils/asymptote/base/three_surface.asy
+++ b/Build/source/utils/asymptote/base/three_surface.asy
@@ -321,9 +321,12 @@ patch operator * (transform3 t, patch s)
Si[j]=t*si[j];
}
- transform3 t0=shiftless(t);
- for(int i=0; i < s.normals.length; ++i)
- S.normals[i]=t0*s.normals[i];
+ if(s.normals.length > 0) {
+ transform3 t0=shiftless(t);
+ t0=determinant(t0) == 0 ? identity4 : transpose(inverse(t0));
+ for(int i=0; i < s.normals.length; ++i)
+ S.normals[i]=t0*s.normals[i];
+ }
S.colors=copy(s.colors);
S.planar=s.planar;