This is the massive repository for all code for the class CIS3250 Fall Semester.

Overview
==========================================
Transforming Shapes Through Matrix Multiplication
==========================================

Description of functionality:

This project transforms a shape (which is expressed as a set of points) according to the parameters provided. 

https://docs.google.com/document/d/1p10rx8R_3oGFU1SiKOWELDZhxhAfR2k61Vg8fF_Rl34/edit


Instructions to run the file:

After using the make command, the following command should run the program,
./final inputShapeFile.csv inputTransformation.txt ouputShapeFile.csv
the following command will run the program with tests
./final inputShapeFile.csv inputTransformation.txt ouputShapeFile.csv -t


Format for Input and Output files:

inputShapeFile.csv and ouputShapeFile.csv:

Where each column of the file corresponds to the heading for its value ex. 

X,Y,Z,L
1.121,1.003,1.2,1.00
2,3,4,1
0,0,0,1
1,0,0,1
0,1,0,1
0,0,1,1

Where for the first point X = 1.121 Y = 1.003, Z = 1.2 and  L = 1.00 

inputTransformation.txt:

This is the configuration file that contains all the parameter values for all the functions. For example:

setGlobalScale=1
setXScale=1
setYScale=1
setZScale=1
setXRotation=0
setYRotation=0
setZRotation=0
setXTranslation=0
setYTranslation=0
setZTranslation=0
setXReflection=0
setYReflection=0
setZReflection=0
setXshear=0
setYshear=0
setZshear=0
setOrthographic=1

Where each corresponds to a transformation with the following limitations and functionality:

setGlobalScale

This value handles the scaling of all values inside of a point where the value passed in must be greater than zero.

setXScale
setYScale
setZScale

This value handles the scaling of each individual x y z coordinate individually to scale all the points.

setXRotation
setYRotation
setZRotation

This value handles the rotation of  points about each axis based on a supplied angle which is in degrees.

setXTranslation
setYTranslation
setZTranslation

This value handles the translation of  points in the x, y and z directions where there is no restrictions on these values.

setXReflection
setYReflection
setZReflection

These are boolean values that represent if the shape has to be flipped (1) or not (0) in the x, y and z direction.


setXshear
setYshear
setZshear

These values correspond to the x, y and z shears on a point where they will transform the function by squashing or pulling it in a direction.


setOrthographic

This is a  boolean value that represents if the shape has to be projected orthographically (1) or not (0).
Issues
  • test point helper functions, style changes

    test point helper functions, style changes

    • added createTestPoints() to give each group a clean testing slate
    • added freeTestPoints()
    • removed instances of "group #" inside runAllTests()
    opened by cc0407 2
  • Group10

    Group10

    Implemented group 10's functions and tests, changed makefile to include our new folder & file name, added test-handler call inside main. The works.

    opened by cc0407 2
  • ifndef update and zeroTransformationTest fix

    ifndef update and zeroTransformationTest fix

    Fixed the uninitialized array of points in zeroTransformationTest. Fixed a loop error that went over 4 vectors no matter the numOfPoints value. Changed the ifndef define names to SCALINGINX

    opened by mbahgatTech 1
  • Add Group17 Implementation

    Add Group17 Implementation

    • Changed Group17 to OutputResults.
    • Implemented Functions and Tests for OutputResults.
    • Removed heap allocation for filename in favor of referencing the string literal directly since the value should never change.
    opened by D3h4n 1
  • ScalingInX changes

    ScalingInX changes

    Fixed a typo in RotationInYTests.c that was causing compilation errors: all instances of (inputShape -> numOfPoints) were changed to (inputShape -> numOfVectors). Added ScalingInX implementation and tests. Updated header files. Updated makefile: fixed typo in CFLAGS and added ScalingInX files.

    opened by mbahgatTech 1
  • Group13

    Group13

    We can't test this until this branch has the up-to-date versions of main.c/h and of other people's code which don't reference "struct vector" like the old versions in this branch do. I'm approximately 85% sure this is what I need to do to get up up to date. The group 13 code in this branch compiles to a .o file without errors, but since the full program won't compile, it hasn't been tested for things like runtime or logical errors.

    opened by AFraser16 1
2021 Fall Comp2012h Final Project. A Plant-Vs-Zombie style desktop game with beautiful graphics and sound effects. Developer: thomas914, mitester and tiliuau.

Underperforming Students vs Teachers Table of Contents Underperforming Students vs Teachers Table of Contents Authors Code Conventions Workflow Class

null 3 Apr 14, 2022
This contains code and relevant schematics from my Applied Digital Signal Processing class, where we developed various digital filters on the NXP FRDM K22F development board.

#dsp_class Summary This repo is meant to hold any of the C and MATLAB programming I did over the course of my Applied Digital Signal Processing class

Abdullah Almosalami 1 Nov 11, 2021
Tool that generates unit test by C/C++ source code, trying to reach all branches and maximize code coverage

What is UTBotCpp? UTBotCpp generates test cases by code, trying to cover maximum statements and execution paths. We treat source code as source of tru

null 24 Jun 17, 2022
Exploits for the house of IO class of vulnerabilities

House of IO - Heap Reuse What Is This? A heap exploitation technique that allows for returns an arbitrary memory address from Malloc. An exploit primi

Maxwell 11 Oct 29, 2021
A single-class C++ library for reading animated GIF files

EasyGifReader EasyGifReader is a single-class C++ library that aims to simplify reading an animated GIF file. It is built on top of and depends on gif

Viktor Chlumský 5 Feb 7, 2022
Implementation of a lock-free ring buffer class.

Lock-free ring buffer This is an implementation of a lock-free ring buffer, using only C++11 STL level features. Originally designed for the NymphCast

Maya Posch 12 Apr 9, 2022
This repository contains the source code of the project(StereoCraft) that we have developed for the Mixed Reality Hackathon organized by Microsoft using StereoKit SDK

StereoCraft - A block-building like experience built using StereoKit This repository contains the source code of the project that we have developed fo

G Bhanuteja 2 Dec 23, 2021
The new Windows Terminal and the original Windows console host, all in the same place!

The new Windows Terminal and the original Windows console host, all in the same place!

Microsoft 83.8k Jun 27, 2022
Toybox: all-in-one Linux command line.

Toybox: all-in-one Linux command line.

Rob Landley 1.7k Jun 29, 2022
A single header C++ library for parsing command line arguments and options with minimal amount of code

Quick Arg Parser Tired of unwieldy tools like getopt or argp? Quick Arg Parser is a single header C++ library for parsing command line arguments

null 44 Feb 21, 2022
null 76 Apr 18, 2022
DollarSkip is a short piece of C code designed to ignore the dollar symbol at the start of commands.

DollarSkip is a short piece of C code designed to ignore the dollar symbol at the start of commands.

null 19 Apr 15, 2022
A simple command line application in order to create new Code workspaces.

mkcws Summary A simple command line application in order to create new Code workspaces. License This project's license is GPL 2. The whole license tex

Kevin Matthes 0 Apr 1, 2022
Spitfire is a basic terminal language that can exicute code via the terminal.

Spitfire is a basic terminal language that can exicute code via the terminal. It is easy to learn and runs fast, considering that its just a 300 line c++ file.

jhomas tefferson 0 Nov 18, 2021
A command-line tool to generate Linux manual pages from C source code.

mangen A command-line tool to generate Linux manual pages from C source code. Description mangen is, as said above, a program to generate Linux manual

null 2 Nov 15, 2021
CodeCompactor is an open source program designed for reducing the size of your code!

CodeCompacter An exciting, new and open source program for reducing the length of your code! Usage: ./CodeCompacter {ARGUMENTS} Arguments: -L {languag

Henry Dewsnap 1 Nov 28, 2021
Advent-of-Code: 2021 Edition

?? ?? Advent of Code 2021 ☃️ ❄️ Description Advent of code 2021 Awesome Advent of Code Advent of Code is an Advent calendar of small programming puzzl

Lento Manickathan 6 Apr 5, 2022
CppCompetitor - A program for dueling code bots.

CPP Competitor CPP Competetior is a mini program that's let you battle code bots. To get it running you only need A class for controlling the game's s

Nikola Dimitroff 1 Apr 23, 2020
nicegraf-shaderc is a command-line tool that transforms HLSL code into shaders for various graphics APIs.

User Manual Table of Contents Introduction Project Status Obtaining the Source Code and Building Running Defining Techniques Generated Header File Pip

nicebyte 88 Jun 20, 2022