module CodeWorld.Test.Abstract where
import Data.Tuple.Extra (both)
import CodeWorld.Tasks.API (Drawable(..))
import CodeWorld.Tasks.Color (Color(..))
import CodeWorld.Test.Normalize (NormalizedPicture)
someSquare :: NormalizedPicture
someSquare :: NormalizedPicture
someSquare = Double -> Double -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a
rectangle Double
1 Double
1
someSolidSquare :: NormalizedPicture
someSolidSquare :: NormalizedPicture
someSolidSquare = Double -> Double -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a
solidRectangle Double
1 Double
1
someRectangle :: NormalizedPicture
someRectangle :: NormalizedPicture
someRectangle = NormalizedPicture
someSquare
someSolidRectangle :: NormalizedPicture
someSolidRectangle :: NormalizedPicture
someSolidRectangle = NormalizedPicture
someSolidSquare
someWideRectangle :: NormalizedPicture
someWideRectangle :: NormalizedPicture
someWideRectangle = Double -> Double -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a
rectangle Double
2 Double
1
someWideSolidRectangle :: NormalizedPicture
someWideSolidRectangle :: NormalizedPicture
someWideSolidRectangle = Double -> Double -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a
solidRectangle Double
2 Double
1
someTallRectangle :: NormalizedPicture
someTallRectangle :: NormalizedPicture
someTallRectangle = Double -> Double -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a
rectangle Double
1 Double
2
someTallSolidRectangle :: NormalizedPicture
someTallSolidRectangle :: NormalizedPicture
someTallSolidRectangle = Double -> Double -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a
solidRectangle Double
1 Double
2
someCircle :: NormalizedPicture
someCircle :: NormalizedPicture
someCircle = Double -> NormalizedPicture
forall a. Drawable a => Double -> a
circle Double
1
someSolidCircle :: NormalizedPicture
someSolidCircle :: NormalizedPicture
someSolidCircle = Double -> NormalizedPicture
forall a. Drawable a => Double -> a
solidCircle Double
1
someColor :: NormalizedPicture -> NormalizedPicture
someColor :: NormalizedPicture -> NormalizedPicture
someColor = Color -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Color -> a -> a
colored Color
AnyColor
rotatedQuarter :: NormalizedPicture -> NormalizedPicture
rotatedQuarter :: NormalizedPicture -> NormalizedPicture
rotatedQuarter = Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> a -> a
rotated (Double -> NormalizedPicture -> NormalizedPicture)
-> Double -> NormalizedPicture -> NormalizedPicture
forall a b. (a -> b) -> a -> b
$ Double
forall a. Floating a => a
piDouble -> Double -> Double
forall a. Fractional a => a -> a -> a
/Double
4
rotatedHalf :: NormalizedPicture -> NormalizedPicture
rotatedHalf :: NormalizedPicture -> NormalizedPicture
rotatedHalf = Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> a -> a
rotated (Double -> NormalizedPicture -> NormalizedPicture)
-> Double -> NormalizedPicture -> NormalizedPicture
forall a b. (a -> b) -> a -> b
$ Double
3Double -> Double -> Double
forall a. Num a => a -> a -> a
*Double
forall a. Floating a => a
piDouble -> Double -> Double
forall a. Fractional a => a -> a -> a
/Double
4
rotatedThreeQuarters :: NormalizedPicture -> NormalizedPicture
rotatedThreeQuarters :: NormalizedPicture -> NormalizedPicture
rotatedThreeQuarters = Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> a -> a
rotated (Double -> NormalizedPicture -> NormalizedPicture)
-> Double -> NormalizedPicture -> NormalizedPicture
forall a b. (a -> b) -> a -> b
$ Double
5Double -> Double -> Double
forall a. Num a => a -> a -> a
*Double
forall a. Floating a => a
piDouble -> Double -> Double
forall a. Fractional a => a -> a -> a
/Double
4
rotatedUpToFull :: NormalizedPicture -> NormalizedPicture
rotatedUpToFull :: NormalizedPicture -> NormalizedPicture
rotatedUpToFull = Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> a -> a
rotated (Double -> NormalizedPicture -> NormalizedPicture)
-> Double -> NormalizedPicture -> NormalizedPicture
forall a b. (a -> b) -> a -> b
$ Double
7Double -> Double -> Double
forall a. Num a => a -> a -> a
*Double
forall a. Floating a => a
piDouble -> Double -> Double
forall a. Fractional a => a -> a -> a
/Double
4
smaller :: NormalizedPicture -> NormalizedPicture
smaller :: NormalizedPicture -> NormalizedPicture
smaller = Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> a -> a
dilated Double
0.5
larger :: NormalizedPicture -> NormalizedPicture
larger :: NormalizedPicture -> NormalizedPicture
larger = Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> a -> a
dilated Double
2
smallerX :: NormalizedPicture -> NormalizedPicture
smallerX :: NormalizedPicture -> NormalizedPicture
smallerX = Double -> Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a -> a
scaled Double
0.5 Double
1
largerX :: NormalizedPicture -> NormalizedPicture
largerX :: NormalizedPicture -> NormalizedPicture
largerX = Double -> Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a -> a
scaled Double
2 Double
1
smallerY :: NormalizedPicture -> NormalizedPicture
smallerY :: NormalizedPicture -> NormalizedPicture
smallerY = Double -> Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a -> a
scaled Double
1 Double
0.5
largerY :: NormalizedPicture -> NormalizedPicture
largerY :: NormalizedPicture -> NormalizedPicture
largerY = Double -> Double -> NormalizedPicture -> NormalizedPicture
forall a. Drawable a => Double -> Double -> a -> a
scaled Double
1 Double
2
someCurve :: Int -> NormalizedPicture
someCurve :: Int -> NormalizedPicture
someCurve Int
points = [Point] -> NormalizedPicture
forall a. Drawable a => [Point] -> a
curve ([Point] -> NormalizedPicture) -> [Point] -> NormalizedPicture
forall a b. (a -> b) -> a -> b
$ Int -> [Point] -> [Point]
forall a. Int -> [a] -> [a]
take (Int
pointsInt -> Int -> Int
forall a. Num a => a -> a -> a
+Int
1) ([Point] -> [Point]) -> [Point] -> [Point]
forall a b. (a -> b) -> a -> b
$ (Point -> Point) -> Point -> [Point]
forall a. (a -> a) -> a -> [a]
iterate ((Double -> Double) -> Point -> Point
forall a b. (a -> b) -> (a, a) -> (b, b)
both (Double -> Double -> Double
forall a. Num a => a -> a -> a
+Double
0.1)) (Double
1,Double
0)
someSolidCurve :: Int -> NormalizedPicture
someSolidCurve :: Int -> NormalizedPicture
someSolidCurve Int
points = [Point] -> NormalizedPicture
forall a. Drawable a => [Point] -> a
solidClosedCurve ([Point] -> NormalizedPicture) -> [Point] -> NormalizedPicture
forall a b. (a -> b) -> a -> b
$ Int -> [Point] -> [Point]
forall a. Int -> [a] -> [a]
take (Int
pointsInt -> Int -> Int
forall a. Num a => a -> a -> a
+Int
1) ([Point] -> [Point]) -> [Point] -> [Point]
forall a b. (a -> b) -> a -> b
$ (Point -> Point) -> Point -> [Point]
forall a. (a -> a) -> a -> [a]
iterate ((Double -> Double) -> Point -> Point
forall a b. (a -> b) -> (a, a) -> (b, b)
both (Double -> Double -> Double
forall a. Num a => a -> a -> a
+Double
0.1)) (Double
1,Double
0)