summaryrefslogtreecommitdiff
path: root/graphics/asymptote/base/plain_picture.asy
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/base/plain_picture.asy')
-rw-r--r--graphics/asymptote/base/plain_picture.asy28
1 files changed, 24 insertions, 4 deletions
diff --git a/graphics/asymptote/base/plain_picture.asy b/graphics/asymptote/base/plain_picture.asy
index 9df0e5753e..8c1fbd99f9 100644
--- a/graphics/asymptote/base/plain_picture.asy
+++ b/graphics/asymptote/base/plain_picture.asy
@@ -733,7 +733,7 @@ struct picture { // <<<1
add(new void(frame f, transform t) {
picture opic=new picture;
d(opic,t);
- add(f,opic.fit(identity()));
+ add(f,opic.fit(identity));
},exact);
}
@@ -745,12 +745,12 @@ struct picture { // <<<1
},exact,above);
}
- void add(void d(picture, transform3, transform3, triple, triple),
+ void add(void d(picture, transform3, transform3, projection, triple, triple),
bool exact=false, bool above=true) {
add(new void(frame f, transform3 t, transform3 T, picture pic2,
projection P, triple lb, triple rt) {
picture opic=new picture;
- d(opic,t,T,lb,rt);
+ d(opic,t,T,P,lb,rt);
add(f,opic.fit3(identity4,pic2,P));
},exact,above);
}
@@ -1134,6 +1134,26 @@ pair size(picture pic, bool user=false)
return t*M-t*m;
}
+// Return a projection adjusted to view center of pic from specified direction.
+projection centered(projection P, picture pic=currentpicture) {
+ projection P=P.copy();
+ if(P.autoadjust && P.center) {
+ triple min=pic.userMin3();
+ triple max=pic.userMax3();
+ if(min != max) {
+ triple target=0.5*(max+min);
+ if(pic.keepAspect)
+ P.camera=target+P.vector();
+ else
+ P.camera=target+realmult(unit(P.vector()),max-min);
+ P.target=target;
+ P.normal=P.vector();
+ P.calculate();
+ }
+ }
+ return P;
+}
+
// Frame Alignment <<<
pair rectify(pair dir)
{
@@ -1608,7 +1628,7 @@ void fill(pair origin, picture pic=currentpicture, path[] g, pen p=currentpen)
{
picture opic;
fill(opic,g,p);
- add(pic,opic,origin);
+ add(pic,opic.fit(identity),origin);
}
void postscript(picture pic=currentpicture, string s)