Back to All Results
Input static SVG SVG Image
Input text prompt
<svg>...</svg>
Rotate the blue square to intersect with the black square.

Revised input text prompt
<svg>...</svg>
Rotate the blue square to intersect with the black square. Use rotation only.

MoVer program
o_1 = iota(Object, lambda o: color(o, "blue") and shape(o, "square"))
o_2 = iota(Object, lambda o: color(o, "black") and shape(o, "square"))

exists(Motion, lambda m_1: type(m_1, "rotate") and post(m_1, s_intersect(o_1, o_2)) and agent(m_1, o_1))
Animation from input text prompt
Verification report
o_1 = iota(Object, lambda o: color(o, "blue") and shape(o, "square")): True
color: True
shape: True

o_2 = iota(Object, lambda o: color(o, "black") and shape(o, "square")): True
color: True
shape: True

exists(Motion, lambda m_1: type(m_1, "rotate") and post(m_1, s_intersect(o_1, o_2)) and agent(m_1, o_1)): True
type: True
post: True
s_intersect: True
agent: True

This page illustrates the example described in the Discussion section of the paper. In this animation produced from the original input text prompt, the blue square did end up intersecting with the black square, passing all verification checks. However, the blue square is not moved by the rotation motion but by an additional, unmentioned translation motion. This shows the ambiguity of the original input text prompt.


Animation from revised input text prompt
Verification report
o_1 = iota(Object, lambda o: color(o, "blue") and shape(o, "square")): True
color: True
shape: True

o_2 = iota(Object, lambda o: color(o, "black") and shape(o, "square")): True
color: True
shape: True

exists(Motion, lambda m_1: type(m_1, "rotate") and post(m_1, s_intersect(o_1, o_2)) and agent(m_1, o_1)): True
type: True
post: True
s_intersect: True
agent: True

Revised input text prompt: "Rotate the blue square to intersect with the black square. Use rotation only."

The user here modified the input text prompt to specify that only rotation should be used to move the blue square to intersect with the black square. Now the animation moves the blue square by rotating it around the midpoint between the two squares, matching the original intention of the user.