Great Deal! Get Instant $10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

Microsoft Word - project1.docx CSCE 4813 – Programming Project #1 Due Date – 01/31/2020 at 11:59pm REVISED 1. Problem Statement:...

1 answer below »
Microsoft Word - project1.docx
CSCE    4813    –    Programming    Project    #1    
Due    Date    –    01/31/2020    at    11:59pm    
REVISED    
    
1.    Problem    Statement:    
    
When    spreadsheet    software    was    introduced    in    the    1980’s    it    dramatically    changed    
how    people    could    store,    manipulate    and    visualize    data.        The    spreadsheet’s    simple    
user    interface    enabled    users    to    easily    enter    rows    and    columns    of    data,    do    arithmetic    
calculations,    and    most    importantly    display    the    results    in    easily    understood    charts.    
    
    
    
    
    
In    this    programming    project,    you    will    be    developing    a    collection    of    functions    that    
will    let    users    create    and    display    data    using    the    four    types    of    charts    above.            
    
If    we    look    closely    at    these    four    charts,    you    will    see    that    the    background    information    
for    all    four    of    these    charts    are    the    same.        
    
• They    all    display    a    series    of    evenly    spaced    horizontal    lines.            
• They    all    display    evenly    spaced    tic    marks    on    the    X    and    Y    axis.    
• They    all    display    numerical    values    adjacent    to    the    tic    marks    on    the    axes.    
• They    all    display    the    name    of    the    data    field    being    displayed        
    
The    major    difference    between    these    four    charts    is    how    they    convey    information    
about    data    values    using    different    geometric    objects.            
    
• For    a    column    chart,    the    height    of    each    column    is    determined    by    the    data    
value    relative    to    the    height    of    the    chart.        The    width    of    each    column    can    be    
determined    by    dividing    the    width    of    the    chart    by    the    number    of    data    values    
eing    displayed.    
    
• For    a    point    chart,    data    values    are    displayed    using    points    represented    by    
squares,    diamonds,    or    circles.        In    this    case,    the    X    and    Y    locations    of    points    are    
determined    by    the    magnitude    of    the    data    value    relative    to    the    height    and    
width    of    the    chart.    
    
• For    a    line    chart,    data    is    displayed    using    a    sequence    of    line    segments    that    
connect    the    point    locations    of    the    data.        In    this    case,    the    width    of    the    line    is    
chosen    to    be    larger    than    the    scale    lines    so    the    line    segments    are    visible.    
    
• For    the    area    chart,    data    is    displayed    by    filling    in    the    area    under    the    line    chart    
with    a    solid    color.        This    area    can    be    defined    using    a    collection    of    polygons    
where    each    polygon    has    one    line    segment    going    through    two    data    points    and    
three    line    segments    that    mark    the    right,    bottom,    and    left    sides    of    the    area    
eing    enclosed.    
    
1.1    Chart    Creation    
    
For    this    programming    assignment,    your    first    task    is    to    implement    a    C++    program    
that    prompts    the    user    to    enter    the    name    of    their    input    data    file,    and    the    type    of    chart    
they    would    like    to    create    (column,    point,    line,    area).        Your    program    should    then    read    
in    the    input    data    file,    do    the    necessary    calculations    to    scale    this    data    to    the    size    of    
the    output    window,    and    then    output    a    sequence    of    graphics    commands    to    create    the    
specified    chart.    
    
Your    output    charts    should    look    as    similar    as    possible    to    the    four    examples    above.        To    
simplify    this    project,    you    are    NOT    required    to    output    the    numbers    that    are    adjacent    
to    the    tic    marks    in    the    charts    or    the    name    data    field    being    displayed.        You    only    need    
to    draw    lines    in    the    background    and    the    geometric    objects    representing    data    values.    
    
The    four    graphics    commands    we    will    be    using    for    this    project    are:    
    
• set_color    #R    #G    #B    
    
This    command    sets    the    color    of    the    “pen”    in    the    graphics    program.        All    object    
drawn    after    this    command    will    be    displayed    with    this    color    until    another    
set_color    command    is    executed.        The    color    values    for    R,    G,    B    should    be    
floating    point    values    between    0    and    1,    where    0    =    black,    and    1    =    full    color.    
    
    
    
    
• draw_point    #size    #x    #y        
    
This    command    draws    a    point    of    the    specified    size    at    the    specified    location.    
The    size    value    should    be    an    integer    between    [1..10].        The    (x,y)    coordinates    
should    be    integers    between    [0..width-1]    and    [0..height-1]    respectively.    
    
• draw_line    #width    #x1    #y1    #x2    #y2    
    
This    command    draws    a    line    of    the    specified    width    from    (x1,y1)    to    (x2,y2).    
The    width    value    should    be    an    integer    between    [1..10].        The    (x,y)    coordinates    
should    be    integers    between    [0..width-1]    and    [0..height-1]    respectively.    
    
• draw_polygon    #N    #x1    #y1    #x2    #y2    …    #xN    #yN    
    
This    command    fills    in    a    convex    polygon    region    that    is    defined    by    a    sequence    
of    N    points.        The    value    N    should    be    an    integer    greater    than    or    equal    to    3    that    
specifies    the    number    of    points    on    the    polygon    boundary.        The    (x,y)    
coordinates    of    each    point    should    be    integers    between    [0..width-1]    and    
[0..height-1]    respectively.    
         
1.2    Chart    Display    
    
Your    second    task    is    to    implement    an    OpenGL    program    that    reads    a    sequence    of    
commands    in    the    format    above,    and    calls    the    appropriate    OpenGL    commands    to    
display    the    co
esponding    chart    on    the    screen.        You    will    be    given    a    skeleton    OpenGL    
program    that    demonstrates    how    to    draw    each    of    the    graphics    primitives    above.    
    
To    demonstrate    the    co
ectness    of    your    program,    you    should    run    your    first    program    
to    four    times    to    generate    four    sequences    of    output    commands,    and    save    these    
commands    in    four    data    files.        Then    you    should    run    your    OpenGL    program    four    times    
to    generate    images    of    these    charts.        When    your    program    is    working,    do    screen    
captures    of    your    four    charts    and    include    these    images    into    your    project    report.    
    
2.    Design:    
    
For    each    of    the    chart    types    above,    the    major    design    task    is    to    work    out    what    
sequence    of    graphics    commands    are    needed,    and    exactly    what    x_pos    y_pos    values    to    
use    when    displaying    these    geometric    objects.        The    key    here    is    to    work    out    the    scale    
factors    you    need    to    use    to    convert    the    raw    data    values    into    coordinates    that    are    
within    the    chart.        For    example,    if    the    data    values    go    from    1..100    and    the    height    of    the    
chart    is    500    pixels,    then    the    scale    factor    should    be    500/100    =    5.        You    will    notice    that    
there    is    small    border    around    the    outside    of    the    drawing    area.        Your    program    will    
need    to    take    this    border    into    account    when    displaying    graphics    objects.    
    
3.    Implementation:    
    
This    semester    we    will    be    using    C++    and    OpenGL    to    implement    all    of    our    
programming    projects.        If    you    are    using    a    Mac    with    Xcode    installed,    then    you    can    
download    the    src.tar    file    and    compile    the    sample    graphics    code    using    the    enclosed    
Makefile.        If    you    are    using    a    PC,    then    your    best    option    would    be    to    download    and    
install    a    Linux    VM    from    the    department’s    website.        The    instructions    for    doing    this    
are    posted    in    README    file    the    “Source    Code”    page    of    the    class    website.        Once    you    
have    Linux    and    OpenGL    installed,    you    can    compile    your    graphics    program    using    
“g++    -Wall    show_chart.cpp    -o    show_chart    -lGL    -lGLU    -lglut”.    
    
You    are    encouraged    to    look    at    sample    OpenGL    programs    to    see    how    the    “main”    
function    and    the    “display”    function    are    normally    implemented.        As    always,    you    
should    
eak    the    code    into    appropriate    functions,    and    then    add    code    incrementally    
writing    comments,    adding    code,    compiling,    debugging,    a    little    bit    at    a    time.            
    
Remember    to    use    good    programming    style    when    creating    your    program.        Choose    
good    names    for    variables    and    constants,    use    proper    indenting    for    loops    and    
conditionals,    and    include    clear    comments    in    your    code.    Also,    be    sure    to    save    backup    
copies    of    your    program    somewhere    safe.    Otherwise,    you    may    end    up    retyping    your    
whole    program    if    something    goes    wrong.    
    
4.    Testing:    
    
Test    your    program    with    different    random    number    generator    seeds    until    you    get    
some    images    that    look    fun/interesting.        Take    a    screen    shot    of    these    images    to    
include    in    your    project    report.        You    may    also    want    to    show    some    bad/ugly    images    
that    illustrate    what    happens    if    there    is    a    problem    somewhere    (e.g.    too    many    lines,    
lines    too    short,    etc.).        You    can    discuss    how    you    co
ected    these    problems    in    your    
project    report.    
    
5.    Documentation:    
    
When    you    have    completed    your    C++    program,    write    a    short    report    using    the    project    
eport    template    describing    what    the    objectives    were,    what    you    did,    and    the    status    of    
the    program.    Be    sure    to    include    several    output    images.        Finally,    describe    any    known    
problems    and/or    your    ideas    on    how    to    improve    your    program.    Save    this    report    to    be    
submitted    electronically    via    Blackboard.    
    
6.    Project    Submission:    
    
In    this    class,    we    will    be    using    electronic    project    submission    to    make    sure    that    all    
students    hand    their    programming    projects    and    labs    on    time,    and    to    perform    
automatic    plagiarism    analysis    of    all    programs    that    are    submitted.        When    you    have    
completed    the    tasks    above    go    to    Blackboard    to    upload    your    documentation    (a    single    
docx    or    pdf    file),    and    all    of    your    C++    program    files.        Do    NOT    upload    an    executable    
version    of    your    program.    
    
The    dates    on    your    electronic    submission    will    be    used    to    verify    that    you    met    the    due    
date    above.    All    late    projects    will    receive    reduced    credit:    
    
• 10%    off    if    less    than    1    day    late,    
• 20%    off    if    less    than    2    days    late,    
• 30%    off    if    less    than    3    days    late,    
• no    credit    if    more    than    3    days    late.        
    
You    will    receive    partial    credit    for    all    programs    that    compile    even    if    they    do    not    meet    
all    program    requirements,    so    handing    projects    in    on    time    is    highly    recommended.    
    
7.    Academic    Honesty    Statement:    
    
Students    are    expected    to    submit    their    own    work    on    all    programming    projects,    
unless    group    projects    have    been    explicitly    assigned.    Students    are    NOT    allowed    to    
distribute    code    to    each    other,    or    copy    code    from    another    individual    or    website.    
Students    ARE    allowed    to    use    any    materials    on    the    class    website,    or    in    the    textbook,    
or    ask    the    instructor    and/or    GTAs    for    assistance.    
    
This    course    will    be    using    highly    effective    program    comparison    software    to    calculate    
the    similarity    of    all    programs    to    each    other,    and    to    homework    assignments    from    
previous    semesters.    Please    do    not    be    tempted    to    plagiarize    from    another    student.    
    
Violations    of    the    policies    above    will    be    reported    to    the    Provost's    office    and    may    
esult    in    a    ZERO    on    the    programming    project,    an    F    in    the    class,    or    suspension    from    
the    university,    depending    on    the    severity    of    the    violation    and    any    history    of    prior    
violations.
Answered Same Day Jan 30, 2021

Solution

Avnish answered on Feb 06 2021
157 Votes
output.txt
set_color 1.0 1.0 1.0
draw_line 1 -9.411765 10.588235 10.588235 -9.411765
draw_line 1 -9.588235 -7.411765 10.588235 -7.411765
draw_line 1 -9.588235 -5.411765 10.588235 -5.411765
draw_line 1 -9.588235 -3.411765 10.588235 -3.411765
draw_line 1 -9.588235 -1.411765 10.588235 -1.411765
draw_line 1 -9.588235 0.588235 10.588235 0.588235
draw_line 1 -9.588235 2.588235 10.588235 2.588235
draw_line 1 -9.588235 4.588235 10.588235 4.588235
draw_line 1 -9.588235 6.588235 10.588235 6.588235
draw_line 1 -9.588235 8.588235 10.588235 8.588235
set_color 1.0 0 0
draw_polygon 4 -8.411765 -7.411765 -3.411765 -5.411765 -3.411765 -9.411765 -8.411765 -9.411765
set_color 1.0 0 0
draw_polygon 4 -3.411765 -5.411765 -1.411765 -4.411765 -1.411765 -9.411765 -3.411765 -9.411765
set_color 1.0 0 0
draw_polygon 4 -1.411765 -4.411765 -0.411765 -1.411765 -0.411765 -9.411765 -1.411765 -9.411765
set_color 1.0 0 0
draw_polygon 4 -0.411765 -1.411765 5.588235 2.588235 5.588235 -9.411765 -0.411765 -9.411765
set_color 1.0 0 0
draw_polygon 4 5.588235 2.588235 6.588235 8.588235 6.588235 -9.411765 5.588235...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here