# axisLim

Below is a demonstration of the features of the `axisLim` function

## Contents

- Syntax
- Description
- Examples
- Example 1: setting axis limits tightly around a coordinate set in 2D
- Example 2: setting axis limits tightly around a coordinate set in 3D
- Example 3: setting axis limits tightly around multiple coordinate sets in 3D
- Example 3: setting axis limits tightly around multiple coordinate sets with varying dimensions
- Example 4: setting axis limits tightly for coordinates over time

```
clear; close all; clc;
```

## Syntax

`axLim=axisLim(V);`

## Description

This function computes appropiate axis limits for the input vertices V. The vertices may be an k x l x m array, where by by k is the number of vertices, l is the number of dimensions (e.g. 2 or 3), and m is for instance a time (or other) dimension. The function returs axLim which are appropriate axis limits such that the coordinates in V can be displayed appropriately (and in a tight fashion).

## Examples

## Example 1: setting axis limits tightly around a coordinate set in 2D

Create example data

t=linspace(0,2*pi,250)'; r=5+2*sin(5*t); V=r.*[cos(t) sin(t)];

Compute appropriate limits

```
axLim=axisLim(V) %Axis limits for vertices
```

axLim = -6.6976 6.7000 -5.8390 6.9989

Assign axis limits using `axisLim`

cFigure; plot(V(:,1),V(:,2),'b-'); axis equal; axis(axisLim(V)); drawnow;

## Example 2: setting axis limits tightly around a coordinate set in 3D

Create example data

[F,V]=stanford_bunny;

Compute appropriate limits

```
axLim=axisLim(V) %Axis limits for vertices
```

axLim = -77.1042 77.6348 -59.4666 60.6226 -77.2629 76.0109

Assign axis limits using `axisLim`

```
cFigure;
gpatch(F,V);
axisGeom; camlight headlight;
axis(axisLim(V));
gdrawnow;
```

## Example 3: setting axis limits tightly around multiple coordinate sets in 3D

Create example data

[F1,V1]=graphicsModels(3); [F2,V2]=graphicsModels(4); V2=V2+1;

Compute appropriate limits

```
axLim=axisLim(V1,V2) %Axis limits for vertices
```

axLim = -1.0247 5.0281 -0.3258 1.8240 -0.6125 2.5817

Assign axis limits using `axisLim`

cFigure; hold on; gpatch(F1,V1,'gw'); gpatch(F2,V2,'rw'); axisGeom; camlight headlight; axis(axisLim(V1,V2)); gdrawnow;

## Example 3: setting axis limits tightly around multiple coordinate sets with varying dimensions

Create example data

V1=r.*[cos(t) sin(t)]; [F2,V2]=geoSphere(2,1);

Compute appropriate limits

```
axLim=axisLim(V1,V2) %Axis limits for vertices
```

axLim = -6.6976 6.7000 -5.8390 6.9989 -1.0000 1.0000

Assign axis limits using `axisLim`

cFigure; hold on; plot(V1(:,1),V1(:,2),'b-'); gpatch(F2,V2,'rw'); axisGeom; camlight headlight; axis(axisLim(V1,V2)); gdrawnow;

## Example 4: setting axis limits tightly for coordinates over time

[F,V]=stanford_bunny; %Some graphics data nSteps=50; t=linspace(0,pi,nSteps)'; U=[-100*t/pi zeros(nSteps,1) 50*sin(t)]; V_DEF=zeros(size(V,1),3,nSteps); for q=1:1:nSteps V_DEF(:,:,q)=V+U(q*ones(size(V,1),1),:); end

Compute appropriate limits

```
axLim=axisLim(V_DEF) %Axis limits for vertices
```

axLim = -177.1042 77.6348 -59.4666 60.6226 -77.2629 125.9853

Assign axis limits using `axisLim`

hf=cFigure; hp=gpatch(F,V,'gw'); axisGeom; camlight headlight; axis(axisLim(V_DEF)); %Set limits to be suitable across time drawnow;

Use `anim8` to animate the scene

animStruct.Time=linspace(0,1,nSteps); %Time vector for q=1:1:nSteps %Set entries in animation structure animStruct.Handles{q}=hp; %Handles of objects to animate animStruct.Props{q}={'Vertices'}; %Properties of objects to animate animStruct.Set{q}={V_DEF(:,:,q)}; %Property values for to set in order to animate end % Start |anim8| gui anim8(hf,animStruct);

* GIBBON* www.gibboncode.org

*Kevin Mattheus Moerman*, [email protected]

**GIBBON footer text**

License: https://github.com/gibbonCode/GIBBON/blob/master/LICENSE

GIBBON: The Geometry and Image-based Bioengineering add-On. A toolbox for image segmentation, image-based modeling, meshing, and finite element analysis.

Copyright (C) 2006-2022 Kevin Mattheus Moerman and the GIBBON contributors

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.