Minimum-Volume Box Containing a Set of Points

Similar documents
Minimum-Area Rectangle Containing a Set of Points

Intersection of an Oriented Box and a Cone

Constructing a Cycle Basis for a Planar Graph

On-Line Computer Graphics Notes CLIPPING

Perspective Mappings. Contents

Triangulation by Ear Clipping

Intersection of a Triangle and a Cone

Prime Time (Factors and Multiples)

Math 7 Glossary Terms

Basics of Computational Geometry

Distance Between Point and Triangle in 3D

Minimum Bounding Boxes for Regular Cross-Polytopes

2D rendering takes a photo of the 2D scene with a virtual camera that selects an axis aligned rectangle from the scene. The photograph is placed into

Intersection of Moving Sphere and Triangle

Curriki Geometry Glossary

GEOMETRIC TOOLS FOR COMPUTER GRAPHICS

MATH DICTIONARY. Number Sense. Number Families. Operations. Counting (Natural) Numbers The numbers we say when we count. Example: {0, 1, 2, 3, 4 }

Learning Task: Exploring Reflections and Rotations

Clipping a Mesh Against a Plane

Alaska Mathematics Standards Vocabulary Word List Grade 7

Analytic Geometry Vocabulary Cards and Word Walls Important Notes for Teachers:

Chapter 8. Properties of Triangles and Quadrilaterals. 02/2017 LSowatsky

Area. Angle where two rays. Acute angle. Addend. a number to be added. an angle measuring less than 90 degrees. or line segments share an endpoint

Geometry. Zachary Friggstad. Programming Club Meeting

Number/Computation. addend Any number being added. digit Any one of the ten symbols: 0, 1, 2, 3, 4, 5, 6, 7, 8, or 9

Least-Squares Fitting of Data with B-Spline Curves

Quaternions and Dual Coupled Orthogonal Rotations in Four-Space

From Vertices To Fragments-1

Intersection of Box and Ellipsoid

Prentice Hall Mathematics: Course Correlated to: Colorado Model Content Standards and Grade Level Expectations (Grade 6)

THE CAMERA TRANSFORM

Interactive Math Glossary Terms and Definitions

2D Object Definition (1/3)

Answers to practice questions for Midterm 1

Multiplication and Division

1 Introduction 2. 2 A Simple Algorithm 2. 3 A Fast Algorithm 2

Suggested Foundation Topics for Paper 2

UNIT 6: Connecting Algebra & Geometry through Coordinates

Mathematics. Scheme of Work. Year 7. New Mathematics Framework

Preview Notes. Systems of Equations. Linear Functions. Let y = y. Solve for x then solve for y

Dynamic Collision Detection

Mathematics Background

NUMBER 1 ALGEBRA 1 AUTUMN TERM YEAR 7

heptagon; not regular; hexagon; not regular; quadrilateral; convex concave regular; convex

AQA GCSE Maths - Higher Self-Assessment Checklist

2009 Fall Startup Event Thursday, September 24th, 2009

Glossary Common Core Curriculum Maps Math/Grade 6 Grade 8

Mathematics Curriculum

Learning Task: Exploring Reflections and Rotations

GEOMETRY. Background Knowledge/Prior Skills. Knows ab = a b. b =

Prentice Hall Mathematics: Course Correlated to: Colorado Model Content Standards and Grade Level Expectations (Grade 8)

High-Dimensional Computational Geometry. Jingbo Shang University of Illinois at Urbana-Champaign Mar 5, 2018

High School Geometry

Revolve Vertices. Axis of revolution. Angle of revolution. Edge sense. Vertex to be revolved. Figure 2-47: Revolve Vertices operation

Practical Linear Algebra: A Geometry Toolbox

CS 130 Final. Fall 2015

January Regional Geometry Team: Question #1. January Regional Geometry Team: Question #2

Math 462: Review questions

Triangle in a brick. Department of Geometry, Budapest University of Technology and Economics, H-1521 Budapest, Hungary. September 15, 2010

CHAPTER 2 REVIEW COORDINATE GEOMETRY MATH Warm-Up: See Solved Homework questions. 2.2 Cartesian coordinate system

Prentice Hall Mathematics: Pre-Algebra 2004 Correlated to: Colorado Model Content Standards and Grade Level Expectations (Grade 8)

Introduction to Geometry

Unit 10 Study Guide: Plane Figures

Birkdale High School - Higher Scheme of Work

Geometry 1-1. Non-collinear Points not on the same line. Need at least 3 points to be non-collinear since two points are always collinear

Killingly Public Schools. Grades Draft Sept. 2002

Edexcel Linear GCSE Higher Checklist

Presents. The Common Core State Standards Checklist Grades 3-5

NRP 2195: WorkWise: Math at Work correlated to CCR Math Standards Level C

(Refer Slide Time: 00:02:02)

Choose the correct answer below. 2. Convert the angle to a decimal in degrees.

Tessellation of a Unit Sphere Starting with an Inscribed Convex Triangular Mesh

An angle that has a measure less than a right angle.

Glossary of dictionary terms in the AP geometry units

Chinle USD CURRICULUM GUIDE. SUBJECT: MATH GRADE: 6th TIMELINE: 2 nd Quarter. Kid Friendly Learning Objective

6 Mathematics Curriculum

The Ultimate Maths Vocabulary List

Math Services Align with the Common Core State Standards Mathematics (K 6)

Computational Geometry Algorithmische Geometrie

COURSE LEVEL UNIT/FOCUS Desired Results Transfer Meaning Acquisition

Geometry Final Exam - Study Guide

Fourth Grade Mathematics Vocabulary. Created by Carrie Schoenfelder Staff Development Teacher Strawberry Knoll Elementary School

Line Arrangement. Chapter 6

Extended Mathematics for Cambridge IGCSE by David Rayner. Chapter 1. Identify and use rational and irrational numbers, real numbers.

Montana City School GRADE 5

Texas High School Geometry

Geometry - Chapter 1 - Corrective #1

An Algorithm for Characteristic Length Measurement from Point Cloud Data

2 + (-2) = 0. Hinojosa 7 th. Math Vocabulary Words. Unit 1. Word Definition Picture. The opposite of a number. Additive Inverse

Summary Of Topics covered in Year 7. Topic All pupils should Most pupils should Some pupils should Learn formal methods for

Index COPYRIGHTED MATERIAL. Symbols & Numerics

CT5510: Computer Graphics. Transformation BOCHANG MOON

6th Bay Area Mathematical Olympiad

Euclidean Shortest Paths in Simple Cube Curves at a Glance

Year 7 to 11 Mathematics Curriculum Overview

YEAR 10- Mathematics Term 1 plan

Chapter 4 Concepts from Geometry

TEACHER CERTIFICATION STUDY GUIDE KNOWLEDGE OF MATHEMATICS THROUGH SOLVING...1

9-1 GCSE Maths. GCSE Mathematics has a Foundation tier (Grades 1 5) and a Higher tier (Grades 4 9).

Unit 1. Word Definition Picture. The number s distance from 0 on the number line. The symbol that means a number is greater than the second number.

Transcription:

Minimum-Volume Box Containing a Set of Points David Eberly, Geometric Tools, Redmond WA 98052 https://www.geometrictools.com/ This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Created: July 25, 2015 Contents 1 Introduction 2 2 Processing Hull Faces 2 2.1 Comparing Areas........................................... 3 2.2 Comparing Volumes......................................... 3 2.3 Comparing Angles.......................................... 4 3 Processing Hull Edges 4 4 Conversion to a Floating-Point Box 5 1

1 Introduction Given a finite set of 3D points, we want to compute the minimum-volume box that contains the points. The bos is not required to be axis aligned, and generally it will not be. It is intuitive that the minimum-volume box for the points is supported by the convex hull of the points. The hull is a convex polyhedron, and any points interior to the polyhedron have no influence on the bounding box. Thus, the first step of the algorithm is to compute the convex hull of the 3D points. The minimum-volume box has a face coincident with a hull face or has three mutually orthogonal edges coincident with three hull edges that (of course) are mutually orthogonal [1]. The implementation consists of two parts. The first part processes all the hull faces and the second part processes all triples of mutually orthogonal edges. As each candidate box is computed, the minimum-volume box is updated to that candidate when the candidate s volume is smaller. 2 Processing Hull Faces For a specified hull face, the minimum-volume box with a face coincident to the hull face can be computed by projecting the hull vertices to the plane of the hull face and to a normal line of that plane. Let the normal line have unit-length normal N which points to the side of the plane on which the hull lies. We do not have to project all hull vertices onto the plane. The projection onto the plane is necessary only for an extreme polyline of hull edges. Each edge of this polyline is shared by two hull faces. Let the face normals be N 0 and N 1, both pointing inside the hull, where N N 0 < 0 N N 1 or N N 1 < 0 N N 0. The extreme polyline therefore is the terminator for the convex hull faces whose inner-pointing normals form an obtuse angle with the plane normal N. The projection of the extreme polyline onto the plane is a convex polygon P. The projection of the hull vertices onto the normal line is a line segment of length h. This measurement is the height of the bounding box of the hull. The base of the bounding box has area A which we want to minimize to obtain the minimum volume V min = ha min. To accomplish this, we can use the algorithm for computing the minimum-area rectangle of a convex polygon living in a plane. The algorithm uses the method of rotating calipers, which is described in a document at our website and includes implementation details, Minimum-Area Rectangle Containing a Set of Points, referred to throughout this document as MAR2. The rotating calipers algorithm is typically described as if you have real-valued arithmetic; that is, all computations involved are exact. On a computer, we have to be wary of numerical rounding errors when attempting to implement the algorithm using floating-point arithmetic. In MAR2, we used arbitrary precision arithmetic (rational arithmetic) to compute the minimum rectangle exactly. However, the algorithm depends on selecting an edge with (not necessarily unit-length) direction U = (u 0, u 1 ) and using an orthogonal vector of the same length, U = ( u 1, u 0 ), to avoid normalization of vectors by an inverse square root operation. The fact that U = U was sufficient to push through the exact arithmetic. In the 3D case, the projection of a point onto a plane can be done using exact arithmetic. If P 0 is a point in the plane and P 1 is a point off the plane, and if N is a normal vector for the plane (not necessarily unit length), the projection of P 1 is Q 1 = P 1 N N (P 1 P 0 ) N N = P 1 N (P 1 P 0 ) N 2 (1) 2

The right-hand side can be computed exactly using arbitrary precision arithmetic. To apply the 2D rotating calipers algorithm, for an edge of the convex polygon P (the projection of the extreme polyline), the direction is U, which is not necessarily unit length, and is in the plane, so N U = 0. To obtain a vector in the plane perpendicular to U, we can use U = N U. However, U = N U, which is not equal to U when N 1. In the attempt to use exact arithmetic, we can only build normals N using cross products of two linearly independent edge directions, but such vectors are generally not unit length. 2.1 Comparing Areas We need to modify the rotating calipers algorithm differently for 3D than we did for 2D. In fact, we do not have to explicitly project the extreme polyline to P. We can work directly with the polyline and generate for each edge a set of vectors, not necessarily unit length. The edge direction is the difference of endpoints, say, E. We compute U 1 = N E and U 0 = U 1 N. The vectors N, U 0, and U 1 are mutually perpendicular. The lengths are N, N E, and N 2 E, respectively. U 0 acts as the convex polygon edge direction and U 1 acts as a direction perpendicular to U 0 that is also in the plane of the convex polygon. The difference of the extreme points of the extreme polyline in the direction U 0 is named 0. The difference of the extreme points of the extreme polyline in the direction U 1 is named 1. The area of the rectangle that has an edge of P coincident with E is ( ) ( ) U0 A = U 0 U1 0 U 1 1 = (U 0 0 )(U 1 1 ) N 3 E 2 (2) The numerator can be computed exactly using arbitrary precision arithmetic. The denominator has an odd power of the length of N, which requires a square root operation that leads to approximation error. But N is a constant regardless of the edge of P we are processing. Rather than comparing areas as we rotate the calipers for P, we can instead compare the values of A = (U 0 0 )(U 1 1 ) N 2 E 2 (3) The denominator of this fraction can be computed exactly. Effectively, we are comparing values of N A without ever having to compute N directly. 2.2 Comparing Volumes Once we have selected the minimum-area rectangle for P, we will need to compute the volume of the bounding box in order to update the current minimum-volume box. Let the difference of the extreme points in the direction N be named. The volume of the bounding box is V = A ( ) N N = (U 0 0 )(U 1 1 )(N ) N 4 E 2 (4) The numerator and denominator can be computed exactly using arbitrary precision arithmetic; therefore, we can update the minimum-volume box as we process each face of the hull without any approximation or rounding errors. 3

2.3 Comparing Angles In the 2D rotating calipers algorithms, we needed to compute the minimum angle between a convex polygon edge and the bounding rectangle edge from which the polygon edge emanated. We arranged to search for the minimum without computing the angles, instead using quantities that are equivalently ordered with the angles. The same is true in the 3D setting. In this case 0 θ 0 < θ 1 π/2 if and only if sin 2 θ 0 < sin 2 θ 1. If D is the direction for a rectangle edge, E is the direction for a convex polygon edge, and U 0 = (N E) N, all not necessarily unit length vectors, then D and U 0 are in the projection plane and have an angle θ between them. From basic geometry, which can be solved for D U 0 = D U 0 sin θ (5) sin 2 θ = D U 0 2 D 2 U 0 2 (6) The numerator and denominator can be computed exactly using arbitrary precision arithmetic. 3 Processing Hull Edges For n edges, the algorithm is theoretically O(n 3 ) because we have three nested loops searching for three mutually orthogonal edges. This sounds expensive, but in practice the constant of the asymptotic order analysis is small because in most cases we compute a dot product between two edge directions, find out the edges are not orthogonal, and continue on with the next loop iteration. The pseudocode is a r r a y <V e r t i c e s > v e r t i c e s (m) ; // m v e r t i c e s i n t h e h u l l a r r a y <Edges> e d g e s ( n ) ; // n e d g e s i n t h e h u l l Vector3 U [ 3 ], s q r l e n ; f o r ( i n t i 2 = 0 ; i 2 < n ; ++i 2 ) U [ 2 ] = v e r t i c e s [ e d g e s [ i 2 ]. V [ 1 ] ] v e r t i c e s [ e d g e s [ i 2 ]. V [ 0 ] ] ; f o r ( i n t i 1 = i 2 + 1 ; i 1 < n ; ++i 1 ) U [ 1 ] = v e r t i c e s [ e d g e s [ i 1 ]. V [ 1 ] ] v e r t i c e s [ e d g e s [ i 1 ]. V [ 0 ] ] ; i f ( Dot (U [ 1 ], U [ 2 ] )!= 0) continue ; s q r l e n [ 1 ] = Dot (U [ 1 ], U [ 1 ] ) ; f o r ( i n t i 0 = i 1 + 1 ; i 0 < n ; ++i 0 ) U [ 0 ] = v e r t i c e s [ e d g e s [ i 0 ]. V [ 1 ] ] v e r t i c e s [ e d g e s [ i 0 ]. V [ 0 ] ] ; i f ( Dot (U [ 0 ], U [ 1 ] )!= 0) continue ; s q r l e n [ 0 ] = Dot (U [ 0 ], U [ 0 ] ) ; // The t h r e e e d g e s a r e m u t u a l l y o r t h o g o n a l. To s u p p o r t e x a c t // a r i t h m e t i c f o r volume computation, r e p l a c e U [ 2 ] by a p a r a l l e l U [ 2 ] = C r o s s (U [ 0 ], U [ 1 ] ) ; s q r l e n [ 2 ] = s q r l e n [ 0 ] s q r l e n [ 1 ] ; // Compute t h e e x t r e m e s o f t h e s c a l e d p r o j e c t i o n s onto t h e a x e s. // u s i n g v e r t i c e s ( 0 ) as t h e o r i g i n. Vector3 umin ( 0, 0, 0 ), umax ( 0, 0, 0 ) ; // e x t r e m e s i n U [ ] d i r e c t i o n s f o r ( i n t j = 0 ; j < m; ++j ) 4

Vector3 d i f f = v e r t i c e s [ j ] v e r t i c e s [ 0 ] ; f o r ( i n t k = 0 ; k < 3 ; ++k ) Numeric dot = Dot ( d i f f, U[ k ] ) ; i f ( dot < umin [ k ] ) umin [ k ] = dot ; e l s e i f ( dot > umax [ k ] ) umax [ k ] = dot ; // Compute t h e volume o f t h e box. Vector3 d e l t a = umax umin ; Numeric volume = ( d e l t a [ 0 ] / s q r l e n [ 0 ] ) ( d e l t a [ 1 ] / s q r l e n [ 1 ] ) d e l t a [ 2 ] ; // Compare t h e volume to t h e c u r r e n t c a n d i d a t e s volume f o r t h e // minimum volume box and update i f n e c e s s a r y. <code goes here >; 4 Conversion to a Floating-Point Box Our implementation of the rotating calipers algorithm tracks the minimum-volume box via the data structure s t r u c t Box Vector3<ComputeType> P, U [ 3 ] ; ComputeType sqrlenu [ 3 ], r a n g e [ 3 ] [ 2 ], volume ; ; The ComputeType is a rational type. The point P acts as an origin and the box axis directions (not necessarily unit length) are U[]. The squared lengths of the axis directions are sqrlenu[]. The range member stores the extreme values for the three directions, the minimum stored in range[][0] and the maximum stored in range[][1]. The conversion to the floating-point representation of the box has some loss of precision, but this occurs at the very end. OrientedBox3<Real> itminbox ; // i n p u t t y p e minimum volume box ComputeType h a l f ( 0. 5 ), one ( 1 ) ; // Compute t h e box c e n t e r e x a c t l y. f o r ( i n t i = 0 ; i < 3 ++i ) ComputeType a v e r a g e = h a l f ( minbox. r a n g e [ i ] [ 0 ] + minbox. r a n g e [ i ] [ 1 ] ) ; c e n t e r += ( a v e r a g e / minbox. sqrlenu [ i ] ) minbox. U[ i ] ; // Compute t h e s q u a r e d e x t e n t s e x a c t l y. Vector3<ComputeType> s q r E x t e n t ; f o r ( i n t i = 0 ; i < 3 ; ++i ) s q r E x t e n t [ i ] = h a l f ( minbox. r a n g e [ i ] [ 1 ] minbox. r a n g e [ i ] [ 0 ] ) ; s q r E x t e n t [ i ] = s q r E x t e n t [ i ] ; s q r E x t e n t [ i ] /= minbox. sqrlenu [ i ] ; f o r ( i n t i = 0 ; i < 3 ; ++i ) 5

itminbox. c e n t e r [ i ] = ( InputType ) c e n t e r [ i ] ; itminbox. e x t e n t [ i ] = s q r t ( ( InputType ) s q r E x t e n t [ i ] ) ; // B e f o r e c o n v e r t i n g to f l o a t i n g p o i n t, f a c t o r out t h e maximum // component u s i n g ComputeType to g e n e r a t e r a t i o n a l numbers i n a // r a n g e t h a t a v o i d s l o s s o f p r e c i s i o n d u r i n g t h e c o n v e r s i o n and // n o r m a l i z a t i o n. Vector3<ComputeType> c o n s t& a x i s = minbox. U[ i ] ; ComputeType cmax = s t d : : max ( s t d : : abs ( a x i s [ 0 ] ), s t d : : abs ( a x i s [ 1 ] ) ) ; cmax = s t d : : max ( cmax, s t d : : abs ( a x i s [ 2 ] ) ) ; ComputeType invcmax = one / cmax ; f o r ( i n t j = 0 ; j < 3 ; ++j ) itminbox. a x i s [ i ] [ j ] = ( InputType ) ( a x i s [ j ] invcmax ) ; N o r m a l i z e ( itminbox. a x i s [ i ] ) ; // Q u a n t i t y a c c e s s i b l e t h r o u g h t h e get a c c e s s o r i n t h e p u b l i c i n t e r f a c e. volume = ( Real ) minbox. volume ; The source code for the implementation is in the file GteMinimumVolumeBox3.h. References [1] Joseph O Rourke. Finding minimal enclosing boxes. International Journal of Computer & Information Sciences, 14(3):183 199, 1985. 6