Point (MathObject Class)

From WeBWorK_wiki
Jump to navigation Jump to search

Point Class

The Point class implements points in [math]{\bf R}^n[/math] for arbitrary [math]n[/math]. Typically, Points are delimited by parentheses, but that can be controlled by settings in the Context. Points are typically used in the Point or Vector Contexts, though they are also available in Matrix Context. It is possible to create Points in [math]{\bf C}^n[/math], though there is no pre-defined Context that makes this easy to do.

The answer checker for Points can give students hints about the coordinates that are wrong, and about whether the number of coordinates is correct.

Creation

Points are created via the Point() function, or by Compute().

   Context("Point");
   
   $p = Point(3,0,-2);
   $p = Point([3,0,-2]);
   $p = Point("(3,0,-2)");
   $p = Compute("(3,0,-2)");


Operations on Points

Points (of the same dimension) can be added to and subtracted from each other. Points can be multiplied and divided by scalars.

   $q = $p + Point(1,3,7);   # same as Point(4,3,5);
   $q = $p + [1,3,7];        # same as above
   $q = 3*$p;                # same as Point(9,0,-6);
   $p = $p/2;                # same as Point(3/2,0,-1);


Answer Checker

As with all MathObjects, you obtain an answer checker for a Point object via the cmp() method:

   ANS(Compute("(4,0,-2)")->cmp);

The Point class supports the common answer-checker options, and the following additional options:

Option Description Default
showDimensionHints => 1 or 0 Show/don't show messages about the wrong number of coordinates. 1
showCoordinateHints => 1 or 0 Show/don't show message about which coordinates are right. 1

By default, the Point answer checker asks the student to type the entire point, including the parentheses and commas. This allows the student to enter point-values formulas (like sums of points, or multiples of points). You may want to restrict the operations that are allowed in the student answer, in which case you might consider using the LimitedPoint Context available in the pg/macros/contextLimitedPoint.pl file; see the POD documentation for details.

Alternatively, you can use the Point's ans_array() method rather than PG's ans_rule() function to obtain a separate answer box for each coordinate. The Point answer checker will manage this collection of answer boxes for you, so your code doesn't have to change in any other way.

   Context("Point");
   
   $P = Point(random(1,10,1),random(1,10,1),-1);
   
   Context()->texStrings;
   BEGIN_TEXT
   \($P\) = \{$P->ans_array\}
   END_TEXT
   Context()->normalStrings;
   
   ANS($P->cmp);

The value of this approach is that it forces the student to enter individual coordinates, without allowing operations on Points.


Methods

The Point class supports the Common MathObject Methods. There are no additional methods for this class.


Properties

The Point class supports the Common MathObject Properties, and the following additional ones:

Property Description Default
$r->{open} The symbol to use for the open parenthesis (
$r->{close} The symbol to use for the close parenthesis )