DOCUMENTATION · v1.0.0About Attitude
Attitude is a photographic posture and range-of-motion tool for physical therapy teaching and clinical practice. It descends from a 1990 method: a grid placed at the film plane of a 35 mm camera, calibrated so each box measured 40 mm (±1 mm) on a subject 4 m away, with the camera leveled by plumb line and spirit level (L'HommeDieu, Touro College, 1990). That study tracked the horizontal distance between the external auditory meatus and the apex of the thoracic kyphosis in people with Parkinson's disease.
The app keeps the same principles and moves them to a phone: an electronic level gates the shutter, the photo is straightened to the true horizon, a reference object sets the real scale, and a light grid in centimeters is drawn on the subject plane.
Intended users: the author and DPT students, for instruction and documentation. Attitude is a measurement aid. It is not a medical device and does not diagnose.
GETTING STARTEDQuick start
- Tap ATT OFF in the top strip to engage the motion sensors. On iPhone, allow motion access when asked.
- Open POSTURE, choose a view (ANT, POST, LT LAT, RT LAT, TOP).
- Tap + Photo › Live camera. Level the phone until the shutter ring turns green, then capture. The photo is straightened automatically.
- Open SCALE in the tool tray under the photo, tap Calibrate, tap both ends of the reference rod, enter its length.
- Open POINTS. Tap AI place for a first pass, then drag each point onto its sticker. Or tap points in the order the yellow prompt under the photo asks for.
- The badge on the photo counts measures within, near and outside the norm. Tap it (or RESULTS) for the full list, then Save screenshot or Add to log.
+ Photo › Load sample on either tab shows a worked example without a camera.
Screen layout on a phone
Tabs sit at the bottom: Posture, ROM, Log and Help. Each measuring tab shows the photo with a tool tray beneath it. Tap a tray button to open that panel; tap it again to close it. On a computer all panels show beside the photo.
INSTRUMENTAttitude indicator
The strip at the top is always visible. It shows the phone's orientation in space using avionics conventions.
- ADI (attitude director indicator): blue sky over brown ground. The horizon rotates opposite to the phone's roll and moves down when the camera points up, exactly as an aircraft's attitude indicator does.
- ROLL: rotation of the phone in its own screen plane (side to side). Positive means the phone's top is rotated clockwise.
- PITCH: tilt of the camera's line of sight. Positive means the camera points above the horizon. When the phone lies flat (TOP view), the readouts switch to TLT X and TLT Y: tilt from straight down along the phone's short and long axes.
| Annunciator | Meaning |
|---|---|
| ATT OFF | Sensors not engaged. Tap to engage (browsers require a tap before granting motion data). |
| LEVEL | Roll and pitch are inside the level gate limits (Settings). |
| NOT LVL | Sensors working, phone outside the limits. |
| ATT FAIL | No motion data arrived. The page is in a viewer that blocks sensors, the device has none, or permission was denied. A red X crosses the ADI, as on a failed flight instrument. |
The sensor value is the phone's gravity vector, smoothed with a light low-pass filter. Typical phone accelerometer noise after smoothing is a few tenths of a degree.
MODULEPosture module
Views
Five views cover the three cardinal planes. Frontal plane: ANT and POST. Sagittal plane: LT LAT and RT LAT. Transverse plane: TOP, an overhead photograph. Each view keeps its own image, rotation, scale and landmarks while you switch between them.
Image sources
- Live camera: in-app viewfinder with the grid, a synthetic horizon, a bank scale and a level-gated shutter. The roll at the moment of capture is saved and used to straighten the image. The Level gate switch can release the shutter when the phone is not level, and the photo is then marked.
- Take photo: opens the phone's own camera app. No sensor value comes with the photo, so use Auto level or 2-point vertical.
- Open file: any existing photo.
Leveling the image
- Sensor: applied automatically to live-camera captures.
- Auto level: finds the dominant near-vertical and near-horizontal edges in the photo (door frames, wall corners, the floor line, the reference rod) and rotates the image to make them true. A confidence value is shown. Low confidence means the scene has no strong straight references.
- 2-point vertical: tap two points on something known to be vertical, such as a plumb line or door frame.
- Slider: manual fine adjustment, ±20°.
Landmarks already placed rotate with the image, so you can re-level at any time.
Scale calibration
Tap Calibrate, then tap the two ends of a reference of known length in the subject's plane and enter the length. Use height does the same using the top of the head and the floor at the heel with the patient's standing height. Until a view is calibrated, distances are shown in pixels and their status reads CAL.
Grid
The grid is drawn on the subject plane. Once calibrated, each box is a real size (default 4 cm, the 40 mm box of the original film grid), and every fifth line is brighter. Before calibration, the grid divides the image height into 40 boxes for visual reference only. Lines start at the plumb reference when one is placed.
Landmarks and the loupe
The chips list the landmarks for the view in placement order. The yellow chip is next. Tap the image to place it; the next chip activates. Drag any point to refine it. While dragging, a 3× loupe appears in the corner away from your finger. Tap a chip to choose which landmark to place or replace. Patient sides are labeled by the patient's side: in ANT, the patient's right is on the image left.
REFERENCEPosture measures
| View | Measure | How it is computed | Compared to |
|---|---|---|---|
| LAT | Ear, shoulder, hip, knee vs plumb | Horizontal distance from the plumb reference (just anterior to the lateral malleolus) to tragus, acromion, greater trochanter and knee joint line. Positive is anterior. | Kendall ideal alignment: on the line (knee slightly posterior). Flag uses the offset tolerance. |
| LAT | Craniovertebral angle (CVA) | Angle between the horizontal through C7 and the line C7 to tragus. | Smaller CVA means more forward head. Flag below the CVA threshold (default 50°). |
| LAT | Trunk inclination | Angle of the greater trochanter to acromion line from true vertical. Positive is forward lean. | 0° ± tilt tolerance. |
| LAT | EAM to kyphosis apex | Horizontal distance from tragus to the thoracic apex. | No population norm. Track change over time; a decrease reflects a less stooped posture (L'HommeDieu 1990). |
| ANT | Head, shoulder, pelvic, knee tilt | Angle of the line joining paired landmarks (pupils, acromions, ASIS, patellae) from true horizontal, with the height difference. | 0° ± tilt tolerance. |
| ANT | Lateral trunk shift | Jugular notch relative to the midpoint of the ankles. | 0 ± offset tolerance. |
| ANT | Q-angle (each side) | Angle between ASIS to patella center and patella center to tibial tuberosity, in the photo plane. | Horton and Hall 1989: women 15.8° ± 4.5, men 11.2° ± 3.0. |
| POST | Shoulder, scapular, PSIS, knee crease tilt | As ANT tilt. | 0° ± tilt tolerance. |
| POST | C7 vs gluteal cleft; head vs heels | Horizontal offsets in the frontal plane. | 0 ± offset tolerance. |
| TOP | Shoulder girdle and pelvic rotation | Angle of the acromion line and ASIS line from the floor reference line. The nose sets which way is anterior. | 0° ± tilt tolerance. |
| TOP | Shoulder to pelvis rotation | Difference of the two rotations. | 0° ± tilt tolerance. |
Status colors: green within tolerance, amber up to twice the tolerance, red beyond, cyan informational with no norm. On each tape the magenta band is the normal or tolerance range and the pointer is the measured value.
MODULEROM module
Choosing joints
Tap the joint button above the photo (or MOTION) and pick joints under Joints in this exam. Each chosen joint gets its own tab. Pick the motion and side; the AAOS normal range, the goniometer alignment and a positioning tip appear for that motion.
Photo goniometer
Load a photo taken at end range. The on-screen goniometer has three handles: the axis (drag to move the whole goniometer), the stationary arm end (white), and the moving arm end (cyan). The dial reads the angle between the arms, and the large readout converts it to the clinical ROM value for that motion, using the zero position of the neutral-zero method:
- Direct: ROM equals the angle between the arms (for example, shoulder flexion: arm at the side is 0°).
- From straight: ROM equals 180° minus the angle (for example, knee flexion: a straight knee is 0°).
- From right angle: ROM equals the difference from 90° (for example, ankle dorsiflexion and hip abduction).
The magenta bug on the dial shows where the moving arm would sit at the normal end range. The stationary arm can be locked to true vertical or true horizontal, which is valid because the image is leveled.
Inclinometer
With sensors engaged, the phone itself becomes a gravity inclinometer. Edge on limb: phone's long edge along the segment, screen facing sideways. Flat on limb: phone lying on the segment, screen up. Press Zero in the start position, move to end range, read or Hold.
Recording
Record writes the value, norm, percentage of norm, side and method to the log. When both sides of a motion are recorded, the left/right card shows the difference and flags it at or beyond the asymmetry setting (default 10°).
FEATUREAI landmarks
AI place runs a pose model (Google MediaPipe Pose Landmarker) on the photo, entirely on the device, and maps its joints to the clinical landmarks. AI points are amber diamonds and their chips are amber. A point becomes a confirmed (cyan) landmark as soon as you drag it or tap it into place.
The pose model finds joint centers, not bony landmarks. Its hip point is the hip joint center, not the greater trochanter or ASIS; its shoulder point is near the glenohumeral joint, not the acromion. Treat AI points as a first draft and move each one onto the palpated sticker. C7, the thoracic apex, the plumb reference and other points the model can't see are left for manual placement. AI placement is not available for the TOP view.
The model loads from the internet the first time it is used (about 9 MB). It needs the hosted version of the app; the claude.ai artifact viewer blocks it.
OUTPUTLog, screenshots, settings
- Save screenshot renders the leveled photo with grid, landmarks, goniometer and the measures panel into one PNG at the photo's full resolution, stamped with date, view, patient label and app version. On a phone it opens the share sheet (choose Save Image); on a computer it downloads.
- Add to log and Record keep a session log in this browser. Copy as text puts it on the clipboard for pasting into notes.
- Settings (Help › Settings) holds units, level gate limits, posture tolerances, the CVA threshold, the ROM within-normal band and the asymmetry flag.
REFERENCENorms and sources
| Joint | Motion: AAOS normal range |
|---|---|
| Cervical | Flexion 0–45 · Extension 0–45 · Lateral flexion 0–45 · Rotation 0–60 |
| Thoracolumbar | Flexion 0–80 · Extension 0–25 · Lateral flexion 0–35 · Rotation 0–45 |
| Shoulder | Flexion 0–180 · Extension 0–60 · Abduction 0–180 · Internal rotation 0–70 · External rotation 0–90 |
| Elbow | Flexion 0–150 |
| Forearm | Pronation 0–80 · Supination 0–80 |
| Wrist | Flexion 0–80 · Extension 0–70 · Radial deviation 0–20 · Ulnar deviation 0–30 |
| Hip | Flexion 0–120 · Extension 0–30 · Abduction 0–45 · Adduction 0–30 · Internal rotation 0–45 · External rotation 0–45 |
| Knee | Flexion 0–135 |
| Ankle / foot | Dorsiflexion 0–20 · Plantarflexion 0–50 · Inversion 0–35 · Eversion 0–15 |
Clinic tolerances (tilt, offset, CVA threshold, within-normal band, asymmetry flag) are adjustable settings, not published norms. Kendall describes ideal alignment qualitatively; the app compares to that ideal using your tolerance.
Sources
- American Academy of Orthopaedic Surgeons. Joint Motion: Method of Measuring and Recording. 1965. Values as tabulated in Norkin CC, White DJ, Measurement of Joint Motion: A Guide to Goniometry.
- Kendall FP, McCreary EK, Provance PG, et al. Muscles: Testing and Function with Posture and Pain. Ideal plumb-line alignment.
- Yip CHT, Chiu TTW, Poon ATK. The relationship between head posture and severity and disability of patients with neck pain. Man Ther. 2008;13(2):148-154. doi:10.1016/j.math.2006.11.002. Smaller CVA in people with neck pain; CVA correlated with disability.
- Horton MG, Hall TL. Quadriceps femoris muscle angle: normal values and relationships with gender and selected skeletal measures. Phys Ther. 1989;69(11):897-901. doi:10.1093/ptj/69.11.897.
- Timurtaş E, Avcı EE, Mate K, et al. A mobile application tool for standing posture analysis: development, validity, and reliability. Ir J Med Sci. 2022;191(5):2123-2131. PMC8556145. Source of the stance-settling protocol and grid distance setup.
- L'HommeDieu R. The effects of spontaneous visual and verbal training versus verbal training alone on the ability to make positive, lasting changes to the posture of people with Parkinson's disease. MA thesis, Touro College, 1990. Posture grid and EAM to kyphosis apex measure.
READ BEFORE USEAccuracy and limits
- 2D projection. A photo flattens a 3D body. Angles are true only in planes square to the camera. Rotation of the body out of that plane shortens segments and changes angles.
- Scale is plane-specific. Calibration is exact only at the reference's distance. A landmark 10 cm nearer the camera than the reference, at 3 m, reads about 3% large.
- Pitch is not corrected. Only roll is removed after capture. Camera pitch causes keystone distortion that changes vertical proportions. Use the level gate.
- Lens distortion. Phone lenses are corrected well in the center and worse at the edges. Keep the subject centered and avoid the ultra-wide lens.
- Landmark error dominates. Most measurement error comes from palpation and placement, not from the software. Published photographic systems show good intra-rater reliability for most variables and weaker inter-rater reliability, especially for pelvic landmarks. Use stickers and the same rater when you compare over time.
- Sensor accuracy. Phone accelerometers are typically accurate to a few tenths of a degree when still. Calibrate a phone by checking it reads LEVEL against a spirit level.
SETUPLive camera and sensors
The in-app camera, the motion sensors and the AI model need the page to be served from a normal secure web address (https). The claude.ai artifact viewer runs pages in a locked frame that refuses camera and motion access and blocks the AI model download. In that viewer:
- The annunciator shows ATT FAIL after you tap it.
- Live camera explains that it is blocked; use Take photo or Open file instead.
- Everything else works: auto level, 2-point leveling, calibration, grid, landmarks, measures, goniometer, log and screenshots.
On the hosted version, iPhone asks once for motion access when you tap ATT OFF, and once for camera access. If you tapped Don't Allow, close and reopen the page in Safari and try again.
DATAPrivacy
Photos are processed in the browser on your device and are never uploaded. The AI model is downloaded to the device and runs there. The session log and settings are kept in this browser's local storage, which you can clear with Clear log. Screenshots go only where you save or share them. Use initials or study codes for patient labels.
HELPTroubleshooting
| Symptom | Fix |
|---|---|
| ATT FAIL | Open the hosted version in Safari or Chrome, tap ATT OFF, allow motion access. Desktop computers have no motion sensors. |
| Live camera says blocked | Same as above, and allow camera access. Use Take photo meanwhile. |
| Auto level confidence low | Include a door frame, wall corner or the reference rod in the shot, or use 2-point vertical on the rod. |
| Distances show px and CAL | Calibrate the view with a reference of known length. |
| AI place fails | Needs the hosted version and an internet connection the first time. The whole body should be visible and well lit. |
| Shutter won't fire | The level gate holds it until the phone is level. Level the tripod or switch the gate off (the capture is then marked). |
REFERENCEGlossary
| ADI | Attitude director indicator. The sky and ground display showing roll and pitch. |
| Annunciator | A labeled status light. Here: ATT OFF, LEVEL, NOT LVL, ATT FAIL. |
| ASIS / PSIS | Anterior and posterior superior iliac spines. |
| Bug | A movable marker on an instrument dial showing a target value. Here, the normal end range on the goniometer. |
| CVA | Craniovertebral angle. |
| EAM | External auditory meatus. The tragus is used as its surface landmark. |
| Keystone | Trapezoid distortion from a camera tilted up or down. |
| Pitch | Up or down tilt of the camera's line of sight. |
| Plumb reference | The vertical line of ideal alignment. Lateral view: just anterior to the lateral malleolus. |
| Roll | Rotation of the phone in its screen plane. |
CHANGELOGRelease notes
Versions follow semantic versioning: major for changes that alter how measures are computed, minor for new features, patch for fixes.
Added
- Persistent attitude strip: ADI, roll and pitch readouts, LEVEL annunciator, failure flag, flat-phone tilt mode.
- Posture module with five views (ANT, POST, LT LAT, RT LAT, TOP) covering frontal, sagittal and transverse planes.
- Live camera viewfinder with grid, synthetic horizon, pitch ladder, bank scale, bubble level for overhead shots, and a level-gated shutter.
- Horizon correction from the capture sensor value, from image edges (Auto level), from two points, or by hand.
- Scale calibration by reference length or standing height; light metric grid with a 4 cm default box.
- Manual landmark placement with loupe; AI landmark placement with confirm-by-touch.
- 17 posture measures compared to Kendall alignment, CVA threshold, Horton and Hall Q-angle norms, and the 1990 EAM to kyphosis apex measure.
- ROM module: joint picker, per-joint tabs, 31 motions with AAOS norms, alignment instructions, draggable goniometer with norm bug and stationary-arm locks, AI goniometer placement, inclinometer mode.
- Session log with left/right comparison and asymmetry flag; copy as text.
- Save screenshot (photo, overlays and measures in one PNG).
- Phone-first layout: bottom tabs, one tool panel at a time, results badge and angle readout on the photo.
- Capture guide and this documentation.
Known limitations
- Camera, sensors and AI landmarks need the hosted version.
- No saved patient records, before and after comparison, or PDF reports yet. Screenshots and the log cover documentation for now.
- Pinch zoom is not available on the stage; use the loupe while dragging.
- The posture sample covers the right lateral view only. ROM samples cover every motion.
Planned
- Before and after overlay of two sessions of the same view.
- LiDAR depth scale on supported iPhones (requires a native app).
- Inter-rater study mode: blind re-placement of landmarks with reliability statistics for student labs.