# Spacecurve1

Jump to: navigation, search

## A Parametric Curve in Space

Click to enlarge

This PG code shows how to ask a parametric curve question with three answer blanks and use MultiAnswer to check the answer.

PG problem file Explanation

Problem tagging:

```DOCUMENT();

loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"parserMultiAnswer.pl",
"AnswerFormatHelp.pl",
);

TEXT(beginproblem());
```

Initialization: Since we will have multiple answer blanks that depend on each other, we need to use `parserMultiAnswer.pl`.

```Context("Numeric");
Context()->variables->are(t=>"Real");
Context()->variables->set(t=>{limits=>[0,10]});

\$a = random(-5,-2,1);
\$x = Formula("\$a * t**2");
\$y = Formula("0");
\$z = Formula("t");

\$multians = MultiAnswer(\$x, \$y, \$z)->with(
singleResult => 1,
checker => sub {
my ( \$correct, \$student, \$self ) = @_;
my ( \$xstu, \$ystu, \$zstu ) = @{\$student};
return 0 unless \$xstu->isFormula;
if ((\$xstu==\$a*\$zstu**2) && (\$ystu==0)) {
return 1;
} else {
return 0;
}
}
);
```

Setup: We use `singleResult => 1` since it doesn't make sense to say that `x(t)` is correct but `z(t)` is incorrect since they depend on one another. First, we check that the student hasn't fed us a bogus constant solution such as `x=y=z=0` by requiring the x-coordinate to be a formula (not a constant) via `return 0 unless \$xstu->isFormula;`. Then, we check that the student's answers satisfy the parametric equation.

```Context()->texStrings;
BEGIN_TEXT
Find a parametrization of the curve \( x = \$a z^2 \)
in the \(xz\)-plane.  Use \( t \) as the
parameter for all of your answers.
\$BR
\$BR
\( x(t) = \) \{\$multians->ans_rule(20)\}
\{ AnswerFormatHelp("formulas") \}
\$BR
\( y(t) = \) \{\$multians->ans_rule(20)\}
\{ AnswerFormatHelp("formulas") \}
\$BR
\( z(t) = \) \{\$multians->ans_rule(20)\}
\{ AnswerFormatHelp("formulas") \}
END_TEXT
Context()->normalStrings;
```

Main Text: Notice that we use `\$multians->ans_rule(20)` (instead of just `ans_rule(20)`) so that the multianswer object is aware of all of the answer blanks.

```\$showPartialCorrectAnswers = 0;

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

Answer Evaluation:

```Context()->texStrings;
BEGIN_SOLUTION
Solution explanation goes here.
END_SOLUTION
Context()->normalStrings;

COMMENT('MathObject version.');

ENDDOCUMENT();
```

Solution: