# ImplicitPlane

## Planes or Lines Defined Implicitly

This shows the PG code to evaluate answers that are planes or lines defined implicitly by an equation.

You may also be interested in EquationsDefiningFunctions

PG problem file Explanation
```DOCUMENT();

"PGstandard.pl",
"parserImplicitPlane.pl",
"parserVectorUtils.pl",
"PGcourse.pl",
);

TEXT(beginproblem());
```

Initialization: In particular, we need to include the `parserImplicitPlane.pl` macro file, which automatically loads `MathObjects.pl`.

```Context("ImplicitPlane");
#  Vectors in the plane
\$AB = non_zero_vector3D();
\$AC = non_zero_vector3D();
while (areParallel \$AB \$AC) {\$AC = non_zero_vector3D()}

#  The normal vector
\$N = cross \$AB \$AC; # or \$N = \$AB x \$AC;
#  The points A, B and C
\$A = non_zero_point3D();
\$B = Point(\$A + \$AB);
\$C = Point(\$A + \$AC);

```

Setup: Create points and vectors. Make sure that the vectors are not parallel. There are several other ways to define planes implicitly, which are explained at parserImplicitPlane.pl.html

If the correct answer is a line in 2D space instead of a plane in 3D space, the only modification needed is to reduce the number of variables to two, which will modify error messages accordingly.

```Context("ImplicitPlane");
Context()->variables->are(x=>"Real",y=>"Real");

```

```Context()->texStrings;
BEGIN_TEXT
An implicit equation for the plane passing through the points
\(\$A\), \(\$B\), and \(\$C\) is \{ans_rule(40)\}.
END_TEXT
Context()->normalStrings;
```

Main Text: Self-explanatory.

```ANS( \$answer->cmp );

ENDDOCUMENT();
```

Answer Evaluation: Just specify a point \$A and a normal vector \$N.