Mediascripting on the Web (CSC 195 2014F) : Assignments
Primary: [Front Door] [Schedule]  [Academic Honesty] [Disabilities] [Email] [Teaching & Learning]  [Calendar]
Current: [Outline] [EBoard] [Reading] [Lab] [Assignment]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Readings]
Reference:
Related Courses: [2013S]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker]
This assignment gives you a chance to explore my soontoberenamed PsAiF/R (Problem Solving, Abstract Images, and Functions/Racket) library.
(psaifrgreyscaleimage FUNCTION WIDTH HEIGHT BORDER)
Make a greyscale image using the given function. The interesting part of the image is WIDTHxHEIGHT, and that portion has a border of BORDER. The FUNCTION should take two numbers in the range [1 .. 1] as input and return a number in the range [1 .. 1] as output.
For example
(psaifrgreyscaleimage (lambda (x y) (* x y)) 100 100 10)
(makefun SEXP)
Convert a description of a PsAiF/R function to a form usable by
psaifrgreyscaleimage
.For example
(makefun '(* x y))
(psaifrgreyscaleillustration SEXP SIZE FONTSIZE)
Makes one of the illustrations that includes the 1/1 labels in the given font size. Unlike
psaifrgreyscaleimage
, expects you to type the function as an S expression.
1
, 0
, 1
, 0.5
Constant functions. Give a single color, from black (1) to white (1).
x
, y
Color based on the x value or the y value

Negate (flip) the value.
sign
Negative numbers go to 1. Positive numbers go to 1. Numbers sufficiently close to zero to to 0.
abs
Compute absolute value.
sine
, cosine
These functions, rescaled appropriately: an input of 1 corresponds to pi, and an input of 1 corresponds to pi.
*
Multiplication. Duh.
add
Add two integers, capping to [1 ... 1].
wrap
Add two integers, wrapping around when you reach 1 (or 1).
Do the lab on PSAiF/R. Doing so should get your account set up to work in PsAiF/R. That lab also has useful documentation.
Clone the GitHub repository at https://github.com/GrinnellCSC195/hw22014S.
Create the file answers/yourname.rkt
and put your answers to the
various questions from the lab in that file.
Create a few (at least two) examples of "interesting" images you can
make with PsAiF/R. Put the code in the examples
folder of the
assignment repository. Feel free to put a sample image there, too.
Pick something that you think is an interesting (but doable) problem
and put a textual description of the goal, an image that illustrates the
goal, or both in the problems
folder.
Add a solution to your problem to your answers
folder.
Fork the repo at https://github.com/GlimmerLabs/psaifr.
Look at the code in main.rkt
and add something useful. (A typical
useful thing would be a new function that we can show.)
Figure out how to send a pull request.
Since your work is on GitHub, I can tell that you've turned it in. It even has a convenient time stamp.
Primary: [Front Door] [Schedule]  [Academic Honesty] [Disabilities] [Email] [Teaching & Learning]  [Calendar]
Current: [Outline] [EBoard] [Reading] [Lab] [Assignment]
Sections: [Assignments] [EBoards] [Examples] [Handouts] [Labs] [Outlines] [Readings]
Reference:
Related Courses: [2013S]
Misc: [SamR] [Glimmer Labs] [CS@Grinnell] [Grinnell] [Issue Tracker]
Copyright (c) 2014 Samuel A. Rebelsky.
This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this
license, visit http://creativecommons.org/licenses/by/3.0/
or send a letter to Creative Commons, 543 Howard Street, 5th Floor,
San Francisco, California, 94105, USA.