Of Men and Machines

 

By opitts2k

 

 

Reality has personality. It is intricate, complicated, multilayered and consistent. Her consistent nature is of most importance to mankind as men are hard wired to experience reality through patterns, logic and continuity. Chaos and disordered things perplex us as our minds struggle to process the world as a connected continuum with ordered start and stops, patterns and reasonable existence and purpose. To understand the nature of reality you must first understand the nature of that thing by which one observes. The purpose of this text is to offer an approach to understanding which may be found useful to understanding this reality we call existence.

 

Reality as we understand it consists of one totality which is energy that is composed of two distinct motivations we call forces and matter. It’s not accidental that we consider even the fundamental properties of existence in terms of a noun and verb. Neither is it accidental that we describe things as a triad. This is a human construct. Scale and time is not real and is innately a human construct and therefore relative. Our biological computer processes the world in chunks, and time and scale is the minds means to process reality in the frame rates that we understand as perception. Our description of reality whether described mathematically as point particles or strings and branes is designed to organize the world by a set of rules as to prevent the human mind from devolving into a chaotic state. Ignorance is an untrained mind. Each mind has its own operating procedure set and must be programmed by its user for optimal performance.

 

The CPU or Central Processing Unit, system memory circuits, and IO Devices are the computer. The Motherboard connects and powers these components of the engineered system. This is true for all computers including workstations, servers, handhelds and embedded electronics devices. The CPU is a bit cruncher. From its viewpoint everything is bits. The CPU is engineered to respond to electrical impulses variation as bits 0 or 1 or 0’s and 1’s bit sequences called bytes or higher aggregates of these computer voltage patterns. The bit value is 0 or 1. These bytes range in size from bit to bytes, word sizes and on and on. The CPU's only job is to calculate instruction, bit or byte by byte, which are voltage, levels encoding and execute these instruction encodings on a clock cycle. The coding come in three forms; interpreted executive, address and route.

 

CPU circuitry is a study in the disciplines of electricity, material science, and programming theory. These bits sequences are recognize, addressed and routed by copying bytes, basic arithmetic tests, bit logic operations and operations that redirect flow like jump instructions.

 

A computer CPU starts executing code from boot firmware, which is a chip on the computer board in from IO device called ROM (cpu chip). These instructions are called the BIOS. The BIOS directs CPU to the hard drive (MBR-master boot record section of the disk), which is a part of the OS (or Operating System). The OS takes over from there and manages processes to serve the human operator manage the computer unless its windows 8. Processes ask the operating system via system calls to be serviced. OS creates a form to manage human to hardware management via a file system. Os's are Linux, windows, bsd(ox Mac), and ios, IO devices are managed by devices via device drivers. OS employs a new addressing scheme called virtual addresses. Virtual addresses are processed into blocks called pages, which are fed to the processor. Processes talk to each other via files, pipes, sockets, and signals and shared memory.

 

Computers are designed to manage one’s life and modern life is a perception of problem landscapes. These landscapes can be described by three types of problems pyramid, rugged, and rippling. Solutions to problems of life require perception; identification, classification and adaptation to these surfaces for humans traverse the challenge of living the optimal level of one’s life. Points of a landscape are solutions and the elevation that point is the value. The number of peaks from one to many to that of peaks that change with time like rippling water imbues on the human to constantly adapt and learn to accommodate life for optimal living. We will call these solution strategies Pyramid, Rugged and Rippling.

 

Solutions change based on landscape conditions. Pyramid, rugged and rippling landscape problems are situations, which have different solutions requirements. For example, a pyramid problem analogy is what is the optimal rout from home to work in respect to gas consumption. Calculations may be performed with increasing relevant variables like gas consumption, mileage and distance and the fixed problem solution is calculated.

 

One order higher is the rugged terrain landscape problems of life. To introduce this next magnitude of order lets introduce traffic avoidance. This exit or that exit makes the drive a longer distance but with the payoff of optimal speed and less stop and go for fuel efficiency of a vehicle is now optimal. The interconnected and interacting decision of one’s personal choice is a component of complexity but the problem is not complex yet. It's just complicated. Interaction of ones owns choice and the consequences of that choice in making route decisions affect the solution to rugged landscapes problems.

 

The rippling terrain landscape problem. To describe this problem, add a police officer chase with a bag of weed purchased from work. Home has changed because the police are waiting at the house. Calculate gas consumption to home now. Well, now the goal of getting home means how much gas to be free because the solution, optimal gas to home calculation is not home address. Home is freedom now, which is variable and not ones residence and the complicated interdependencies of our actions by the actions of others adaptation, since the police, has been introduced affect the solution. His actions will affect getting home because the meaning of home, which is necessary for our solution calculation, has changed. To get home has complexity now because the interdependence on another's action because of the adaptation of another requires a solution to a complex problem.

 

Being human and aware imposes a duality which must be addressed before we proceed with this text. We are motivated beings. The idea of world and the earth are different because of our awareness of experience or sensation of awareness form a historical point of view. The “world” is us but we exist in the field. The field to date has been a binary perturbation that is the construct of reality. Our living as a part of the field and the frame rate reconstruct of reality as awareness should be considered whenever considering anything to be observed. The fields frame rate as of the time of this writing is understood by men as the Planck length which is a measurement derived from three experimental constants, the Planck constant, universal gravity and the speed of light in a vacuum. Other teachers consider this construct a primitive view. Having existed for thousands of billions of years such measurements are fraught with error and a null starter as light has no absolute speed because there is no absolute measure of time. Because one day is a thousand years and 1000 years is in reality one day.

 

The collective of humanity has agreed to created systems to normalize the uncertainty of life. As beings we abhor chaotic systems. This abhorrence is experienced psychologically and physically as biological responses like stress and confusion. Time and scale are tools of the mind. So it is important to describe the human’s response to these problem terrains by our description of systems we impose on the world. Systems are different things working together as a whole. Systems behaviors are classified as stable, periodic orbits, chaotic, and complex behavior. Stable systems are observed to repeat the same observed behavior by its parts and therefore the whole over a period of time. Periodic orbit is a regular sequenced never changing order of states. Chaotic systems exhibit an initial state of parts and then unrecognizable or no differentiable classification of parts in the final observation. Complex behavior is a system that has regular structure like a periodic system but have longer patterns which require exponentially more information input to observe more information of the whole.

 

The goal of the computers was proposed to organize life into stable complex system. Complex systems are information rich systems with long intervals. Man’s pursuit of systematization as a solution of life problems have revealed the following four observations. Difficult problems require solutions, which are peaks in a rugged landscape because of the interactions between choices of the same entity in a rugged landscape. Complex systems survival requires adaptation and learning of rippling landscapes to survive the interdependency between actions of different entities adaptation of the respective parties. Interdependence, connectedness, diversity and adaptation and learning are the tools humans must understand to control the perils of monotony and chaos. The goal is a stability and richness through solutions to complex problems. In reality the purpose of these systems are only to control humanity as will be explained later in the text.

 

Computers handle varies processes. The objective of managing these processes for the user is to give cues that humans understand so that the machine can perform useful operations for the users. The computer is a tool designed to display visual cues to yield its control and extend human capability like any other human tool. This is achieved by giving the human mental cues such as context, continuity and conveyance (the 3 C's). Continuity is the sense of use which is not operations not changing when same actions are applied same results occurs. The conveyance aspect of the user interface are the cues which alerts a user where to go to do what with the computer interface. Context communicated when and where to perform a particular user action. For example, the keyboard prompts human to touch not stare (context); the screen shows the input entered. The file system whether denoted by slashes or folder icon says something is here, and inside and above, click me or type (conveyance). These cues to perform actions are the same everywhere (continuity). This gives the human the illusion of control. These design consideration for user interaction with computers in a study in itself in a guide called the human interface guidelines.

 

Programming a computer consists of entering commands either visually or lexically into a computer to perform a task. Not everything done on a computers interface is programming it. Coding a machine evolves entering instructions for the computer to follow. Various strategies are used to code computers over the years. Today, text editors accept coding commands and convert those commands into machine executable instructions.

 

Computer operation is based on practices, conventions and rules devised by engineers and scientist to provide services to the user. Desktop applications, services and protocols thread in continuum to maintain the integrity of human computer and computer to human interaction. The fundamental conventions of computers are database, presentation, and communication or DPC. Databases expand the human's capacity to organize people and things. Presentation engages the human with cues and communication extends the reach of the presentation to others, which promotes sharing to aid integrity though social interaction.

 

The computer and the brain are different types computing tools, which operate on electricity essentially the same but are structured differently. The computer was designed to handle the extension of the human's modern day limitations. Humans have not yet discovered practical ways to exist with infinite strength, time and cognizance. Computers are an attempt in a relieving these limitations. The computer and the brain are both machines that operate on electricity but how and why they operate differs dramatically as of this date. A computer can be fitted with peripherals to detect and process many of the known environmental external stimuli as a human brain and can exist practically forever, be fitted with powerful extensions and can assists the brain in achieving improved omniscience. The brains construction is based on chemical processes which obeys encoding and stimuli of over millions if not billions of years of experience and adaptation and is a gift, and the consensus is that this tool, which is not understood because we didn't design it, is fraught with simultaneously incredible and feeble conventions which are unacceptable to humans need for god like presence, omnipotence and control.

 

Its architecture inhabits an environment with a different variable set then that of the computer toolset was designed to process. The organ has layers of bioelectric networks of nodes called neurons. The ability for storage is limitless. These nodes are woven together to create through the process of emergence an experience of mind and continuous awareness. The organ receives, the mind conceives and our consciousness perceives. These perceptions have been shown to be helpful, erroneous, and iterative and helplessly subject to bias, predispositions and limited scope. The choices are an algorithm followed which can only be changed by changing the how to conceive. This change is called learning. Factors like interpersonal handicaps, environmental impediments and disease of the brain can render the entire system to fail to various degrees. Even to the point of death of the whole. Here are some examples of errors of CRP:

 

To leverage the capacity of a tool the user must understand the range of potential of self as a tool. The tool is an extension of self. The only purpose of tools are to maximize leverage of self. Humans have the ability to engage reality as it is. To date the best understanding of reality is a field. Our existence in the field permits us limitless interactivity and manipulation of that field. The field is timeless and it simply has always existed and humans exist in it. We are beings in this field and we are not the only beings which are a part of the field. The key to dealing with tools made by men is to understand the difference between fallacies often promulgated by men and what is real. In this reality there are many beings of various dimensional strata.

 

The recognition of cues is critical to survival in modern society. There is an army of agents guiding society by intercepting conception to manipulate perception with cues to control human behavior. The location in the field is not the cues but perception regarding cues. Cues are any messages that are received by the being in its entirety. They can be local or non-local because of the duality of body and mind in the field. All messages come from the brain and non-local messages are the messages from the field. The mind has quantum properties that are neither dependent on location nor time. We encapsulate this reality with concepts like technology, virtual particles, imagination, imaginary numbers and logic but in the past we called them magic, angels, and divinity. Changing of the name is a political technique employed to manipulate the perception of the masses. There are non-local messages.

 

Computers are counting tools. Before mechanical computers before World War I was a term to describe humans who calculated mathematical tables. William Shanks 1900 calculate pi to 27 places. There have been a myriad of mechanical tools to aid humans in computation. The abacus rod, Abacus Beads and rods, Hindu Arabic System 4 AD, and the Red Stone were created 70,000 years ago. American Native Indians used Quipu Ropes and Knots.

 

As the modern society grew, the need to account for society grew. People had to be counted to provide services and thus were taxed. Farming zones where created and the measure of output needed to be calculated for grain output. Mathematicians were employed to do very important calculations for Lords, Kings and Presidents as well. One such mathematician created the binary counting system. His name was Got fried Wilhelm Leibniz (1646-1716). As with many mathematical pursuits were solutions looking for a problem as well as problems looking for a solution. The Jacquard Loom was developed in France. It was a mechanically programmable scroll through an apparatus, which mechanically reads hole and changed loom position to change color and repetition to create design. The loom's card system was adapted to calculate and reprogram a mechanical calculator by Charles Babb age. Babb age used this calculator when chartered by the astronomical society to calculate tables for stars. Babb ages different engine 1822 had a printer Reprogram able with punch cards also sported a reprogrammed mechanical apparatus to store calculations. Analytical engine, Ada countess of Lovelace designed software for the machine. The machines design was rejected and was finally built more 100 years later in the '80s and it worked.

 

With the Industrial Revolution 1760 to sometime between 1820 and 1840 started in Britain and within a few decades spread to Western Europe and the United States need many reliable calculations for ship navigation, surveying, astronomy, civil engineering and mechanical engineering and of course politics. Human computers had to use tools like rulers and tables to perform large calculations. In America human computers were running short for the first world ware. The Military depended on ballistic tables to shoot missiles over the horizon. Herman Goldstein was charged with computing these tables. They had to be reset for weather conditions by K Mokely to complete the calculation for missile trajectories. Eighteen hundred tables were required with an adding machine 4 years to do one set of firing tables.

 

Something happened in the 1930’s. New ideas were introduced into the science and the military that changed the way computing and thinking had occurred in the past thousands of years of recorded history. This influence can be inferred from the results we have witnessed from then until now. Since that time in the thirties, technology has changed from procedural layering of conventions and constructs to impose a system. To an object oriented top down paradigm of using the until then hidden intricacies of reality to do the will of the engineer. It’s was a paradigm shift. Somehow humankind discovered, rediscovered or where introduced to the nature of unseen forces which guide the knowable phenomena observed on this earth by minds like Newton.

 

Captain Herman goldstone, John Moakley & J proper effort. 1800 vacuum tubes to do a computer. The process were argues and error prone. Then a break through occurred in the 1930’s. Between 1935-1945 Konrad Zeus, a civil engineer was introduced to telephones relays, which had on off switches. The binary system could be used to compute using these relays. Switched can now be used to count.  Using telephone switched and discarded roles of movie film to code the binary on off. Just to add 1 and 1 takes four relays. He devised a Programmable general-purpose computer that takes 3 to 5 seconds to do multiplication. But the switches were too slow. But as history show all too often, luck is import aspect of innovation, breakthroughs and successful revolution.  Fact about it, the Vacuum tubes were being developed for radio amplification at the time and were also known for being extra fast switches. Helmut Schrier approached Conrad and said you could calculate faster. In the phone electromagnetic relays moving metal from on contact to another, a metal rod moved up and down. In a vacuum tube electrons did the switching. Turning on a current was 2000 times faster. German high command turned them down for funding. This is another import aspect of innovation, rejection. Electrons were used for the first time to do computing. Over 50X30 ft. half a million solders joints were needed to make the new system work.

 

This groundbreaking work led to the creation of the ENIAC. Which touted the ability 5000 additions a second. Reprogramming the ENIAC took rewiring by people. 6000 switched and then hundreds of cables. Each accumulator each switch in front would active and deactivate in the back. John Vonohman joined the team and wrote a paper to describe for future generations of the computer. He described a design architecture for an electronic digital computer with subdivisions, processing unit consisting of an arithmetic logic unit and processor registers, a control unit containing an instruction register and program counter, a memory to store both data and instructions, external mass storage, and input and output mechanisms.

 

While the ENIAC was a government sponsored war machine used to decrypt the Germans secret codes. Eckert & Moakley started a commercial computer companies for private industry. In 1946, Ekert & Mackley Computer Company built the UNIVAC, which had magnetic tape. The computer relied on punch cards, keypunch machines and sorters and tabulators and printers. Armies of clerks shuffled shit everywhere. The US census bureau was the first candidate. They were drowning in punch cards. They had a census coming and they needed a computer because congress gave them a time to do it as mandated by congress. Univac was the name of the new computer. They got swamped and got hemmed in a fixed cost contract at a fix time. Freddy Williams 1948 created a computer with a first electronically programmable for the endeavor. The company was a bust thought the job got done.

 

Across the pond in Britain Morris Wilks, later left, as he wanted to make a friendly computer called the Edsack for radio astronomy. In 1951 used the EDSAC to compress three years of work of Lions electronic offer (LEO), 7 hrs. Rather than in 200 weeks to do. For the J Lions Company in Britain for inventory control, payroll and invoices.

 

Now Alan Touring was a giant of a man. A homosexual and a genius, his landscape was different than most. In 1936 he published a paper that described how

Computers could do many of the things that humans did at the time. He was beyond his time and his dreams were realized today as he predicted and wrote papers on how the computer could do what they were doing today and that was replace people. He started manipulating text letters with the computer. The Germans used an Enigma Lorenz, in cryptogram. Touring built the colossus computer, which broke the code. Colossus was built at the same time as the ENIAC. A computer that could solve any task described with symbols. 

 

The private computer wars had begun in 1950 with the IBM 650 Watson computer vs. Remington Rand (UNIVAC). Software became increasingly important to control the increasing electronic programming interface to computers. Fortran was the first programming language for science it appeared in October 1956. It was later adopted for business and supplied a compiler.

 

Around this time another breakthrough occurred. Bratton Bardine and Scholy created the transistor, which miniaturized everything. All these tubes and wired created a situation called the tyranny of numbers. A nest of wired and heat and huge rooms housed computers at this time. Later in the '50s another breakthrough. Jack Hildon and Robert Noice discovered the IC or interpreted circuit although Texas Instruments and Fairchild took credit for it. In 1960 Apollo space flight used small computer utilizing IC technology to maneuver the spacecraft on the moon. But for now most working computers were still too big. Connecting them became an issue. In 1957 a remote connection had to be installed to computers at DARPA. and timesharing was developed in October the 4th of 1957 to help alleviate the need for onsite computation access.

 

Remote connectivity was a means to increase computation presentation in desperate location and non-to soon as a new threat was on the horizon which would create a need for more computation and corroboration. The Cold war of 1957 prompted Eisenhower to create the Bureau and the Defense Department called ARPA (the advanced research projects agency) he was in charge of the space program, which then included computers, and a space program to compete with the Russians Sputnik. The US started its own space computer agency NASA research that went on in relative obscurity. America turned its attention to conquering the stars and beating the Russians to space. Other agencies popped up like DARPA US in 1958 and ARPANET 1966(Defense advance research project). A Military network called RAND was created and a commercial network NPL (NATIONAL PHYSICAL NETWORK) England and Scientific network CYCLADES) France joined Uncle Sam in it efforts to computer supremacy. While all these computers networks where in need of being connected American discover the middle and long range missiles in Cuba, which were able to reach the United States. These systems were mostly centralized and needed network architecture to avoid breakdown during the attack ultimately led decentralized network architecture had to be developed which in case of loss of a node so that the whole would still be operate. Radio communication through radio waves at that time would've been ineffective in case of atomic attack. Radio is ineffective under atomic attack because the ionosphere would be affected. A long-range solution model with interference was needed.

 

MIT had the answer. The engineer was Leonard Klein and he began his qu-ing theory. Packages of data would cue or line up at the nodes of a communication network every switch, demand access and distributed control. Circuit switching that telephone systems use of the technology would depart from computers. The Achilles' heel of this system was the connection between telephones lines if broken. This potential loss that was a weakness, which became a matter of national security to the military in the early 60s when they feared a Soviet nuclear attack on American cities. We needed an indestructible network.

 

Paul Boran was hired to see if we could be built it. He devised hot potato routing for message to transit the network and go to where it was going node by node. Boren was inspired by previous studies of mice in a maze. Engineer Claude Shannon in 1952 built a machine that model mouse finding his way through a maze of secularism. Boran posited that if we could move a mouse through a maze that we should be able to do the same with information. Information flows through as encoded packets with encoding necessary to find its way through the network. Borrowing an idea from the telegraph Boran decided to chop up each message into small equal sized pieces called a packet and each was like a postcard with a two and a from address. Each node knows where it's going and each switch knows how to route to another switch.

 

In the 1960s local and wide area networks did not yet exist. Mainframes were typically “networked” to a series of dumb terminals with serial connections running on RS-232 or some other electrical interface. If a terminal in one city needed to connect with a mainframe in another city, a 300-baud long-haul modem would use the existing analog Public Switched Telephone Network (PSTN) to form the connection. By 1962 there was enough research and theory to show that a viable computer network could be built but implementing it had to wait seven years until 1969 coincidentally the same year man first walked on the moon. While the space was dominated by Soviets the first computer network stem from the frustrations of a single scientist. ARPA scientist Bob Taylor. In 1969 timesharing was the norm. Also, people often paid for computer use back then by the hour.

 

When you actually sat at a terminal and you would type in questions and programs and answers would come back 2 seconds later. He was at guard at a terminal in 1960s Ex-Taylor of ARPA Advanced Research Projects Agency Needed a separate Terminal to Log into Each of Several Timesharing Computers and Research Centers across the Country and No Two Computers Could Talk to You so Taylor Have To Move from Terminal to Terminal to Work on a Different Computer and Puts Clients All the Computers Were in the Floor Taylor Wanted to Build a Network Which Would Link Heterogeneous Computers to Each Other through This Network called remote sharing. Taylor Recruited Larry Roberts. Who's first Connection between two computers? MIT and Lincoln Laboratory's. Built the First 1930 Packet Switching Enjoy Posting and so I Open the Connection between the Two Computers. Tie Each Timesharing Computer to a mini computer. Roberts asked 140 Companies Including AT&T and IBM to Bid on the Project but the Giants of Communication and Computers Refused.

 

Larry Roberts Sought out the Engineers to Build the Advanced Research Projects Agency's Computer Network the ARPANET. It Was Going to Be Based on Special-Purpose Minicomputers Called Interface Message Processor (IMP). Small computers (IMP) sat in front of the mainframe controlling network connectivity.  Support Imps and a Revolutionary Technology Called Packet Switching. Packets Management for a Bit Trying to Find Its Way to Its Destination Each for Operating Independently and Final Destination Is Listed As Postcards Carrying the Data Systems after the Wrong Document and Present for the Recipient Had the Other the Plan Was to Network for Identical Imps Each One Was Actually Different Kind of Mainframe Computer Sigma 7 at UCLA, a SDS 940 at the Stanford Research Institute in IBM Three 360/75 at University Of California at Santa Barbara, and the PDP 10 at the University of Utah Roberts. Right around this time in 1966, IBM introduced the first disk storage system, which employed 50 metal platters,

each of which was 2 feet (0.6 meter) wide and had a storage capacity of 5 MB. IBM created the first floppy disk in 1967. In 1969, Intel Corporation released a

RAM chip that stored 1 KB of information, which at the time was an amazing feat of engineering.

 

A Small Cambridge Massachusetts Company Called Branigan Newman Known As BBN Wasn't Sure Either but They Were Willing to Try Frank Hart Headed the BBN Team pioneered Relatively Revolutionary Concept to Put Together a Packet Switching scheme. Graduate Students at Crocker wrote software for the First Computer Network computer. They solved issues like. How Do You Stop the Packets from Circulating Forever? Imps Couldn't Retransmit the Message. Also there was No Guarantee the Mainframe Computers Would Hold up. On September 1, 1969 and the First Piece of Hardware Created for the Computer Network. Right around this time in 1969 Dennis Ritchie creates C. The End of 1969 interconnected All Four Sites. If this Primitive Computer Network Failed the Effort to Network Computers Might've Been Scrapped as Just another Project beyond the Reach of Current Technology but It Worked in April 1971 the ARPANET Had 18 Mainframe Computers Hooked into the Network. Bob Metcalf hooked up MIT's first network. Transferring Data Files among Its Members. Raymond Tomlinson invented E-Mail. In 1972 the ARPANET Had Fewer Than 25 Sites. Also right around this time, 1973, Garry Hidall Created Dos.

 

Networks Emerge Local Area Networks, Computers throughout Offices and Plans for Wide-Area Networks to Link Computers across Buildings or Campuses but Each New Network Was like a Foreign Country Speaking Its Own Language Good Disparate Networks Be Interconnected to Make Internet Work. Robert E. Kahn, Engineer 1972, invented TCP IP. Robert Elliot "Bob" Kahn is an American Internet pioneer, engineer and computer scientist, who, along with Vinton G. Cerf, invented the Transmission Control Protocol and the Internet Protocol. The Bell telephone

system conversion to digital circuitry continued during the 1970s and included the deployment in 1974 of the first digital data service (DDS) circuits (then called the Data phone Digital Service). DDS formed the basis of the later

deployment of ISDN and T1 lines to customer premises, and AT&T installed its first digital switch in 1976. Around the same time Tim Berners-Lee proposed hypertext system for access to documents at CERN. The system was called www or the World Wide Web.

 

The year 1977 also saw the development of UNIX to UNIX Copy (UUCP), a protocol and tool for sending messages and transferring files on UNIX-based networks.

An early version of the USENET news system using UUCP was developed in 1979. (The Network News Transfer Protocol [NNTP] came much later, in 1987.) Innovation was everywhere. Homebrew engineers emerged further innovating and improving computer technology. In 1975 the Altair 8800 was created. It was the first microcomputer. In 1976 JERRY LAYSON creates a Video game cartridge. Nolan Bushnell in 1976 Creates Atari. And in 1976 personal computer is made in a garage by Steve Wozniack. Hayes introduced the first modem in 1977 and 3Com shipped the first 10 Mbps Ethernet card in 1981.

 

In 1978 Ben Serp and Bob Con, and Teamed up to Develop a Set of Rules or Procedures Known As the TCP/IP Protocol That Is Followed by Different Computer Networks Would Allow Them to Pass the Message Packets Back and Forth Is: Which Actually Is the Term Used to Describe a Little Piece of Papyrus. TCP/IP Protocol Enabled the Networks Interconnect Surfing Could Call the Computer in the Network That Would Know the Protocol and Thus Be Able to Communicate across Networks the Gateway. 10 Years of Refinement and Bureaucratic Haggling finally the TCP estimated the preferences of the OSI reference model and gave way to the TCP/IP protocol standard which guaranteed compatibility between networks and finally learns creating the incident family the 28th 1919 the net heartland was removed but the Internet was born. TCP/IP Was Adopted As the Universal Standard Marking a Milestone in the Development of the Internet a Common Network of Interconnected Networks.

 

The convergence of voice, data, and broadcast information remained a distant vision throughout the 1980s and was even set back because of the proliferation of networking technologies, the competition between cable and broadcast television, and the slow adoption of residential ISDN. New services did appear, however, especially in the area of commercial online services such as America Online (AOL), CompuServe, and Prodigy, which offered consumers e-mail, bulletin

board systems (BBSs), and other services. A significant milestone in the development of the Internet occurred in 1982 when the networking protocol of

ARPANET was switched from NCP to TCP/IP. On January 1, 1983, NCP was turned off permanently—anyone who had not migrated to TCP/IP was out of luck. ARPANET, which connected several hundred systems, was split into two parts, ARPANET and MILNET.

 

Also important to the development of Internet technologies and protocols was the introduction of the Domain Name System (DNS) in 1984. At that time, ARPANET

had more than 1000 nodes and trying to remember their numerical IP addresses was a headache. DNS greatly simplified that process. Two other Internet protocols

were introduced soon afterwards: NNTP was developed in 1987, and Internet Relay Chat (IRC) was developed in 1988.

 

Pei-Yuan Wei created Violawww in 1990. Violawww was the first functional web browser. The software was later stolen by Marc Andresen who later created Mosaic. Mosaic later became Netscape.

 

In 1989 Quantum Computing was theorized. Today's computers, like a Turing machine, work by manipulating bits that exist in one of two states: a 0 or a 1. Quantum computers aren't limited to two states; they encode information as quantum bits, or qubits, which can exist in superposition. Qubits represent atoms, ions, photons or electrons and their respective control devices that are working together to act as computer memory and a processor. Because a quantum computer can contain these multiple states simultaneously, it has the potential to be millions of times more powerful than today's most powerful supercomputers. This superposition of qubits is what gives quantum computers their inherent parallelism. According to physicist David Deutsch, this parallelism allows a quantum computer to work on a million computations at once, while you’re desktop PC works on one. A 30-qubit-quantum computer would equal the processing power of a conventional computer that could run at 10 earflaps (trillions of floating-point operations per second). Today's typical desktop computers run at speeds measured in gig flops (billions of floating-point operations per second).

 

Quantum computers also utilize another aspect of quantum mechanics known as entanglement. One problem with the idea of quantum computers is that if you try to look at the subatomic particles, you could disturb them, and thereby change their value. If you look at a qubit in superposition to determine its value, the qubit will assume the value of either 0 or 1, but not both (effectively turning the quantum computer into a mundane digital computer). To make a practical quantum computer, scientists have to devise ways of making measurements indirectly to preserve the system's integrity. Entanglement provides a potential answer. In quantum physics, if you apply an outside force to two atoms, it can cause them to become entangled and the second atom can take on the properties of the first atom. So if left alone, an atom will spin in all directions. The instant it is disturbed it chooses one spin, or one value; and at the same time, the second entangled atom will choose an opposite spin, or value. This allows scientists to know the value of the qubits without actually looking at them.

 

The purpose of the computer as a tool is to manage the complexity of human life. The computer plays mathematical formula like an instrument was designed to play music to a time signature. To perform math operation, by the use of engineering the electronic internals to signal based timing of a clock. Math is a language just like English or Spanish. Language is the use of words based on rules to communicate a thought. There are language rules called, semantics, lexicon and grammar.

 

Math is man’s effort to map the world, as it is perceived by our minds. The average brain has been hardwired to distinguish two properties and perform generalization. The two properties are differentiation, and quality of differentiation, these properties are stored as generalizations which in turn prepares the brain for further differentiation and so forth. The generalization is a filing scheme, which packs events with enough cues so that the user can recall. Mathematics is the study of the measurement, properties, and relationships of quantities, using numbers and symbols. We also have the capability of abstraction of those concepts and communicate mathematical language. Men manage needs opposing wants and needs of other men through a system of society and for that measurement, which is politically accepted, are needed to survive, control, inhabit and cohabit to promote the species.

 

Mathematical Object Types

 

Type                   Notation                  Example

Scalar                 Lower-case                a, b, x, y1

Infinity ∞ +∞, -∞

Angle Lower-case Greek θ, φ, α, β

Vector Lower-case bold u, v, ax, ay

Quaternion Lower-case bold p, q, rx, sy

Elements of Vector <components> <ux, uy, uz>

Row Vector [components] [ux, uy, uz]

Point Lower-case bold a, p1, p2

Matrix Upper-case bold A, B, M2

Triangle Δ followed by points Δp0p1p2, Δabc

Note: All types can be subscripted or superscripted.

Now that we have a “general” guideline for types (although I might get

 

Operation Notation Example

 

Scalar Multiplication x,* Lower-case 3x5, a*b

Matrix Multiplication x, Lower-case AxB

Dot Product . u . v

Summation Σ expr

Absolute Value |expr| |-35|

Length |expr| |u|

Determinate det(expr) det(M)

Transpose Superscript T vT

Integration ∫ expr

Differentiation Prime Symbol ' x', x''

Note: “expr” stands for general expression.

 

 

Cartesian System

 

Polar System

 

 

Signs in Each Quadrant

Quadrant Sign (x) Sign (y)

I          +        +

II         -        +

III        -        -

IV         +        -

 

Radians vs. Degrees

 

360 = degress = 2*PI radians approx. 6.28 radians

180 degress   = PI radians approx. 3.14159 radians

360 degrees  / 2*PI radians = 1 radians is approx. 57.296

2*PI radians / 360 degree = 1 degress is approx. 0.0175

cos(theta) = adjacent side / hypotenuse = x/r

Domain: 0 <= theta <= 2*pi

Range: -1 to 1

sin(theta) = opposite side / hypotenuse = y/r

Domain: 0<= theta <2*pi

Range: -1 to 1

tan(theta) = sin(theta)/cos(theta) = opposite/hypotenuse / adjacent/hypontenuse

 

Useful Trigonometric Identities

Cosecant csc (theta) = 1/sin (theta)

Secant sec (theta) = 1/cos (theta)

Cotangent cot (theta) = 1/tan (theta)

 

Pythagorean Theorem in terms of trig functions:

Sin (theta) 2 + cos(theta)2 = 1

Conversion identity:

sin(theta1) = cos(theta1 – PI/2)

Reflection identities:

sin(-theta) = -sin(theta)

cos(-theta) = cos(theta)

Addition identities:

sin(theta1 + theta2) = sin(theta1)*cos(theta2) + cos(theta1)*sin(theta2)

cos(theta1 + theta2) = cos(theta1)*cos(theta2) - sin(theta1)*sin(theta2)

sin(theta1 - theta2) = sin(theta1)*cos(theta2) - cos(theta1)*sin(theta2)

cos(theta1 - theta2) = cos(theta1)*cos(theta2) + sin(theta1)*sin(theta2)

 

radius R is computed as

xr = r*cos(theta)

yr = r*sin(theta)

 

3D System

 

Converting 3D Polar Coordinates p(r,θ,z) to Cartesian Coordinates p(x,y,z)

x = r*cos(θ)

y = r*sin(θ)

z = z

 

Converting 3D Cartesian Coordinates p(x,y,z) to Polar Coordinates p(r,θ,z)

Given: x2 + y2 = r2

r = sqrt(x2 + y2)

θ = tan-1(y/x)

z = z

 

 

 

Converting 3D Spherical Coordinates p(ρ,φ,θ) to Cartesian Coordinates

p(x,y,z)

 

From the projection of the line segment o->p onto the x-y plane, we see that:

r = ρ*sin(φ)

z = ρ*cos(φ)

and in the x-y plane, we know that:

x = r*cos(θ)

y = r*sin(θ)

 

Therefore, substituting r into x,y and collecting equations gives:

x = ρ*sin(φ)*cos(θ)

y = ρ*sin(φ)*sin(θ)

z = ρ*cos(φ)

 

Converting 3D Cartesian Coordinates p(x,y,z) to Spherical Coordinates

p(ρ,φ,θ)

Given: x2 + y2 + z2= ρ2

Similarly: x2 + y2 = r2

Therefore:

r = sqrt(x2 + y2)

ρ = sqrt(x2 + y2 + z2)

θ = tan-1(y/x)

 

And we can solve for φ after we have r and ρ from the relationship:

r = ρ*sin(φ)

Solving for φ gives:

φ = sin-1(r/ρ)

Also, we can use:

z = ρ*cos(φ)

Therefore:

φ = cos-1(z/ρ)

 

Radians Versus Degrees

 

Angle in Degrees Angle in Radians

360 degrees 2*PI radians (approx. 6.28 radians)

180 degrees PI radians (approx. 3.14159 radians)

57.296 degrees 360 degrees/2*PI radians = 1 radian

1.0 degrees 2*PI radians/360 degrees = 0.0175 radians

 

 

 

 

Vector Length

 

How to compute the length of a vector or its magnitude. The length of a vector is called the norm and is represented by two vertical bars on either side of the vector (at least in this book), such as |u| and read as, “the length of u.” The length is computed as the distance from the origin to the tip of the vector, or in general as the square root of the sum of the squares of the components. Hence, we can use the standard Pythagorean Theorem to find the length in the 2D and 3D case. Hence, |u| is equal to the following:

 

The Length of a 2D Vector u = <ux, uy>

|u| = sqrt(ux 2 + uy 2)

 

And if u happened to be a 3D vector, the length would be:

The Length of a 3D Vector u = <ux, uy, uz>

|u| = sqrt(ux 2 + uy 2 + uz 2)

 

Matrixes

 

A that is 2*2:

A =   |1  4|

      |9 –1|

 

Here’s a 3×2 matrix:

    |5    6|

B = |2    3|

    |100 -7|

 

And here’s a 2×3 matrix:

C = | 3 5  0 |

    |-8 12 4 |

 

here’s the labeling of a 3×3 matrix:

    |a00 a01 a02|

A = |a10 a11 a12|

    |a20 a21 a22|

 

Basically, a system of equations like

3*x + 2*y = 1

4*x – 9*y = 9

 

Here are the coefficients:

3*x + 2*y = 1

4*x – 9*y = 9

 

A = |3  2|

    |4 -9|

Dimension is 2x2

Here are the variables themselves:

3*x + 2*y = 1

4*x – 9*y = 9

X = |x|

    |y|

Dimension is 2x1 And finally, here are the constants to the right:

3*x + 2*y = 1

4*x – 9*y = 9

B = |1|

    |9|

Dimension is 2x1

With all these nice matrices, can focus on, say, the coefficient matrix A without all the other stuff. Moreover, matrix equations like

 

A*X = B

 

The math is

3*x + 2*y = 1

4*x – 9*y = 9

But how to perform the math? That’s our next topic.

 

The Identity Matrix

 

The first thing needed to define in any mathematical system is 1 and 0. In matrix mathematics, there are analogs of both of the values. The analog of 1 is called the identity matrix and is created by placing all 1s in the main diagonal of the matrix and 0s everywhere else. Furthermore, because matrices can be any size, there are obviously an infinite number of identity matrices. However, there is one constraint: All identity matrices must be square, or in other words m×m, where m >= 1. Here are a couple of examples:

 

I2 = |1 0|

     |0 1|

Dimension 2x2

 

     |1 0 0 |

I3 = |0 1 0 |

     |0 0 1 |

Dimension 3x3

Ironically, the identity matrix isn’t exactly the analog of 1, but is under matrix multiplication. The second type of fundamental matrix is called the zero matrix, and it’s 0 under both addition and multiplication. It’s nothing more than a matrix of dimension m×n with all entries 0. Other than that, there are no special constraints:

 

       |0 0 0|

Z3x3 = |0 0 0|

       |0 0 0|

 

Z1x2 = |0 0|

 

The only interesting thing about the zero matrix is that it has the standard properties of scalar 0 for both matrix addition and multiplication. Other than that, it’s pretty useless.

 

Matrix Addition

 

Addition and subtraction of matrices is performed by adding or subtracting each element in two matrices and coming up with a result for each entry. The only rule to addition and subtraction is that the matrices that the operation is being performed on must be of the same dimension. Here are two examples:

A = |1  5| B = |13 7 |

    |-2 0|     |5 –10|

 

A + B = |1  5| + |13 7 | = |(1+13) (5+7)| = |14 12|

        |-2 0|   |5 –10|   |(-2+5) (0-10|   |3 -10|

 

A – B = |1  5| + |13 7 | = |(1-13) (5-7)    | =  |-12 –2|

        |-2 0|   |5 –10|   |(-2-5) (0-(-10))|    |-7  10|

 

Note that both addition and subtraction are associative; that is, A + (B + C) = (A + B)+ C. However, they’re not commutative under subtraction. (A – B) may not equal (B – A).

 

Here’s a general description for a 3×3 matrix. Let k be any real constant:

|a00 a01 a02|

 

Let A = |a10 a11 a12|

        |a20 a21 a22|

        |a00 a01 a02| |k*a00 k*a01 k*a02|

 

Then k*A = k*|a10 a11 a12| = |k*a10 k*a11 k*a12|

             |a20 a21 a22|   |k*a20 k*a21 k*a22|

 

Here’s an example:

 

3*| 1 4| = |(3*1)    (3*4)| =  |3 12|

  |-2 6|   |(3*(-2)) (3*6)|    |-6 18|

 

 

 

The sum of products (1*1 + 2*6). This product and all the others are really vector dot products (a vector is just a collection of values, like a matrix with one row). A dot product has a very explicit mathematical meaning, which we’ll get to later, but in general, to compute the dot product of two vectors that are each 1nth by simply summing up the products of the independent components. Or, mathematically:

Let a = [1 2 3] b = [4 5 6]

a*b   = [(1*4) + (2*5) + (3*6)] = [32]

1x1

 

Or, just use a scalar.

 

Scaling

To scale a point relative to the origin just multiply the x,y components by scaling  factors sx and sy, respectively. In addition, translation during the scaling operation. Here’s the matrix needed:

    |sx 0 0|

Ms =|0 sy 0|

    |0  0 1|

Eg. p = [x y 1]

                      |sx 0 0|

p’ = p*Ms = [x y 1] * |0 sy 0| = [(x*sx) (y*sy) 1]

                      |0  0 1|

 

Again, this is the desired result for scaling; that is

x’ = sx*x

y’ = sy*y

 

Note the 1 in the lower-right corner of the transformation matrix.

Technically, it’s not necessary to use the result from the third column. Hence, increasing the math cycles. The question is, can we remove the last column of all the transformation matrices and use a 3×2 instead? Let’s see the rotation matrix before that…

 

Rotation

 

The rotation matrix is the most complex of all the transformations because it’s full of trig functions. Rotate the input point by using the rotation equations.

 

To achieve this, look at the rotation equations, pick the operators, and then push them into a matrix. In addition, we don’t want any translation, so the bottom row in positions 0 and 1 will be 0. Here’s the matrix that does the job:

     | cos × sin × |

Mr = |-sin × cos × |

     | 0    0    1 |

 

Eg. p = [x y 1]

| cos × sin × |

p’ = p*Mr = [x y 1] * |-sin × cos × | = | 0 0 1 |

p’ = [(x*cos × – y*sin ×) (x*sin × + y*cos ×) 1]

 

The second type of multiplication is true matrix multiplication. A matrix is an “operator” that operates on another matrix. Given two matrices, A and B, that could be multiplied, they must have the same inner dimension. In other words, if A is m×n, B must be n×r. m and r may or may not be equal, but the inner dimension must be. For example, multiply a 2×2 by a 2×2, a 3×2 by a 2×3, and a 4×4 by a 4×5, but it can’t be multiply by a 3×3 by a 2×4 because the inner dimensions aren’t equal. The resulting matrix will have a size that is equal to the outer dimension of the multiplier and multiplicand matrix. For example, a 2×3 multiplying a 3×4 would have dimension 2×4. Matrix multiplication is one of those things that’s very hard to describe with words. The technical description of the multiplication algorithm. Given a matrix A and B, or A×B, and to multiply them together to compute each element of the result matrix C, you must take a row of A and multiply it by a column in B. To perform the multiplication, the sum of the products of each element, which is also called the dot product. Here’s an example for a 2×2 multiplying a 2×3 in respect to order!

 

Let A = |1 2| B = |1 3 5|

        |3 4|     |6 0 4|

 

C = A x B = |(1*1 + 2*6) (1*3 + 2*0) (1*5 +2*4)|

 

  |(3*1 + 4*6) (3*3 + 4*0) (3*5 +4*4)|

= |13          3                   13|

  |27          9                   31|

 

 

Matrix Multiplication

 

There are two forms of matrix multiplication: scalar and matrix. Scalar matrix multiplication is simply the multiplication of a matrix by a scalar number. Multiply each element of the matrix by the number. The matrix can be m×n at any size.

 

 

Introduction to Quaternions

 

Quaternions were invented in the 1800s by the mathematician William Rowan Hamilton (or Hamiltonian paths). Quaternions weren’t specially designed for 3D graphics but they have found their application in a couple of areas of 3D graphics for which they are well suited:

 

• 3D camera control

• Compact storage

• Smooth 3D interpolation

 

Quaternions are based on complex numbers. They exist mathematically and complex numbers are a tool that can be used to represent mathematical ideas for which real numbers just don’t work. With that in mind, first we are going to take a look at basic complex number theory, and then move on to quaternions and their mathematical properties. After that we’ll see how they are applied in computer graphics and games.

 

Complex Number Theory

 

The set of real numbers R consists of all numbers in the interval [-∞, +∞]:

 

x = sqrt(4) = 2

x = sqrt(1) = 1

x = sqrt(-1) = ???

 

The third equation is the problem that there is no number in the set of real numbers for the square root of –1 because there is no number that when multiplied by itself is equal to –1. It could be deduced that its –1, but –1 * –1 = 1, so that’s not correct. We need a new number, which is called the imaginary number i (or j for electrical engineers). Here is the rule:

 

let i = sqrt(-1)

And then

i*i = -1

Now we can compute things like sqrt(-4), which would be sqrt(-4) = 2*i

 

 

The imaginary number i is a variable or coefficient; that is, all the rules of normal algebra still hold. Just consider i is a variable like. Then i2 terms, are converted into –1. For example, look at the following sum:

 

3 + 5*i + 3*i2 – 10 + 6*i

Collecting terms, we get

= 3*i2 + 5*i + 6*i + 3 – 10

= 3*i2 + 11*i - 7

= 3*(-1) + 11*i – 7

= -3 + 11*i – 7

= -10 + 11*i

 

Mathematically, a complex number is a imaginary number and looks like this:

 

z = (a + b*i)

 

a is called the real part (RP), and b is called the imaginary part (IM). Because a and b can never be added together because of the imaginary coefficient of b, complex numbers are points in the complex plane, as shown in

 

Complex Additive Identity

 

Also, the additive identity (the complex number that, when added to any other complex number, is that number) is (0+0*i), because:

(0+0*i) + (a+b*i) = (0+a + (0+b)*i) = (a+b*i)

 

 

Complex Additive Inverse

 

The complex additive inverse (the number that, when added to any other complex number, is the additive identity (0 + 0*i)) is z* = (-a - b*i) for any complex number z = (a + b*i)

 

because:

 

(a + b*i) + (-a – b*i) = (a-a) + (b-b)*i) = (0 + 0*i)

 

Complex Multiplication

Now for the fun part! Multiplying complex numbers is actually very easy. Let’s do it, and pretend like i is a variable, as we have before.

 

z1 = (a+b*i)

z2 = (c+d*i)

z1*z2 = (a+b*i) * (c+d*i)

= (a*c + a*d*i + b*c*i + b*d*i2)

Noting that i2 = -1 and collecting terms, we get

= (a*c + (a*d+b*c)*i + b*d*(-1))

Collecting terms once again, we have

= ((a*c-b*d) + (a*d+b*c)*i)

 

Therefore, we see that the real part equals (a*c - b*d), and the imaginary part equals (a*d + b*c). Let’s do an example:

 

Example:

 

(1+2*i) * (-3 + 3*i) = ((-3-6) + (-6+3)*i) = (-9 - 3*i)

 

Complex Division

 

Division of complex numbers can be accomplished using brute force. For example, we can compute the quotient of two complex numbers z1/z2 in the following way:

z1 = (a+b*i)

z2 = (c+d*i)

(a+b*i)

z1/z2 = --------

(c+d*i)

 

If c = 0 or d = 0, then the division is trivial, but if neither c nor d is equal to 0, then we are at a bit of an impasse. To perform the division so that the result is in the form (a + b*i) you must clear the denominator.

 

Hyper-Complex Numbers

 

Quaternions are nothing more than hyper-complex numbers. The term hyper-complex can really mean anything mathematically, but usually it means a complex number that has more than one imaginary component. In our case, we are going to refer to hyper-complex numbers with one real part and three imaginary parts—otherwise known as quaternions. A quaternion can be written many ways:

 

The Form of a Quaternion

 

q = q0 + q1*i + q2*j + q3*k

 

or

 

q = q0 + qv, where qv = q1*i + q2*j + q3*k

i = <1,0,0>, j = <0,1,0>, k = <0,0,1>, and <q0,q1,q2,q3> are all real numbers, and i, j, and k are all imaginary numbers that form the vector basis of the quaternion q. Moreover, q0 is real, and has no imaginary coefficient.

 

 

 

Also, the imaginary basis <i,j,k> has the following properties. It can be thought of as a 3D mutually perpendicular set of unit vectors in an imaginary coordinate system that locates points in <i,j,k> space. But, the interesting thing about <i,j,k> is the following relationship:

 

The Quaternion Basis Products i2 = j2 = k2 = -1 = i*j*k

 

MATH

 

Hold  the imaginary basis i, j, k; thus, they are vectors, and they are, but they can also be thought of as variables. They have a dualistic nature, and sometimes it’s appropriate to think of them in their vector form, and sometimes it’s not. Switch back and forth, especially when using the i, j, or k alone or showing relationships among them.

 

The “ = i*j*k” part takes a little getting used to:

Given

 

i2 = j2 = k2 = -1 = i*j*k

therefore

i = j*k = -k*j

j = k*i = -i*k

k = i*j = -j*i

 

which intuitively seems right, because the cross-product of any two perpendicular vectors in an orthonormal basis should be perpendicular to the vectors themselves, or the third vector in a 3D orthonormal basis. And if we invert the order of multiplication, we should see an inversion or sign flip, and we do.

 

The conventions about writing quaternions is using lowercase letters to represent them, but they also break them up into a real and imaginary part, where they represent the imaginary part as a vector like this:

q = q0 + qv

where

qv = q1*i + q2*j + q3*k

 

So q0 is the real part, and qv is the imaginary part and is a vector <q1, q2, q3>. The fact that q, the quaternion itself, is not bolded—it’s confusing because it’s a 4-tuple itself. Use a notation in which quaternions are represented in lowercase bold, AND the vector part is also in lowercase bold. Here’s an example:

 

a = -1 + 3*i + 4*j + 5*k

which in pure vector form is

a = <-1, 3, 4, 5>

or in real-vector form is

a = q0 + qv

where q0 = -1, and qv = <3,4,5> = 3*i + 4*j + 5*j.

 

The point is that we are going to use arrays obviously to represent quaternions in real life, and the first number will always be the real part, and the remaining three numbers will always be the imaginary coefficients of <i,j,k>.:

 

q = q0 + x*i + y*j + z*k

Or in another way:

q = q0 + <x,y,z> . <i,j,k>

 

Here, take advantage of the vector property of <i,j,k>. That is, simply referring to the real part as q0 and the imaginary part as qv = <x,y,z> when relating quaternions to 3D space. However, depending on what going on, it might flip from one representation to another. Quaternions (or any hyper-complex number system) is that the mathematics of addition, multiplication, inverses, and so on are all the same as in standard complex number theory, but with more elements. We now have three imaginary components rather than one, as with basic complex numbers or complex numbers of “rank 1.” Here are some basic operations that might be needed to perform on quaternions when doing calculations.

 

Quaternion Addition and Subtraction

 

Addition or subtraction of quaternions is accomplished by adding or subtracting the real part and the imaginary part, just as with normal complex numbers.

 

Example:

q = q0 + qv

p = p0 + pv

q + p = (q0+p0) + (qv+pv)

 

Example:

q = 3 + 4*i + 5*j + 6*k = <3,4,5,6> in vector form.

p = -5 + 2*i + 2*j – 3*k = <-5,2,2,-3> in vector form.

q + p = (3+ -5) + ( (4+2)*i + (5+2)*j + (6+ -3)*k)

= -2 + 6*i + 7+j + 3*k

 

Writing of the imaginary coefficients is <3,4,5,6> + <-5,2,2,-3> = <-2,6,7, 3>. However, we have to be careful, because although it works for addition and subtraction, for multiplication, recall that the last three components are complex. Keep the quaternions in a form that at least keeps the real and imaginary parts separate. Additive Inverse and Identity The additive inverse of any quaternion q is the number that, when added to q, results in zero. This is just –q:

 

Given:

q = q0 + qv

The additive inverse is just

-q = -q0 - qv

because

q - q = (q0-q0)+ (qv- qv) = 0 + 0*i + 0*j + 0*j

The additive identity, or “0” in quaternion math, must be

q = 0 + 0*i + 0*j + 0*k = <0,0,0,0>.

 

Quaternion Multiplication

 

Because quaternions are hypercomplex numbers based on real numbers with imaginary coefficients, we should be able to just multiply them out, taking into consideration the imaginary coefficients in the products and keeping track of them. Let’s just try it and see what happens.

 

Given

p = p0 + p1*i + p2*j + p3*k = p0 + pv

q = q0 + q1*i + q2*j + q3*k = q0 + qv

then

p*q = (p0 + p1*i + p2*j + p3*k) * (q0 + q1*i + q2*j + q3*k)

= p0*q0 +

p0*q1*i + p1*q2*j + p2*q3*k +

p1*i*q0 + p1*i*q1*i + p1*i*q2*j + p1*i*q3*k +

p2*j*q0 + p2*j*q1*i + p2*j*q2*j + p2*j*q3*k +

p3*k*q0 + p3*k*q1*i + p3*k*q2*j + p3*k*q3*k

 

The structure to this product—maybe a crossproduct here and there, and a dot product? Use the equation to simplify the imaginary product terms:

= p0*q0 +

p0*q1*i + p1*q2*j + p2*q3*k +

p1*q0*i + p1*q1*i2 + p1*i*q2*j + p1*i*q3*k +

p2*j*q0 + p2*q1*j*i + p2*q2*j2 + p2*q3*j*k +

p3*q0*k + p3*q1*k*i + p3*q2*k*j + p3*q3*k2

 

Formula for Quaternion Products Given

p = p0 + p1*i + p2*j + p3*k = p0 + pv

q = q0 + q1*i + q2*j + q3*k = q0 + qv

then

r = p*q = (p0*q0 – (pv . qv)) + (p0*qv + q0*pv + pv x qv)

= r0 + rv

 

Applications of Quaternions

 

Quaternions, by their 4D nature, can handle standard vector angles and rotation matrices to perform standard 3D rotations and manipulations, rotation of a vector and using quaternions to interpolate camera orientations and so forth. Thus manipulating a 3D camera with quaternions turns out to be more intuitive than using angles.

 

Quaternion Rotation

 

Right-handed system:

a. vq' = q* * vq * q, clockwise rotation

b. vq ' = q * vq * q*, counter-clockwise rotation

 

Left-handed system:

c. vq' = q * vq * q*, clockwise rotation

d. vq ' = q* * vq * q, counter-clockwise rotation

 

 

MATH

 

We can use q* in this operator only for unit quaternions; otherwise, you must use the full inverse of q.

 

So vq is a vector encoded in a quaternion with q0 = 0, and q is a quaternion, but what exactly does q represent? What’s its relationship to the x-y-z axis and vq? q defines both the axis of rotation and the angle θ to rotate about the axis! Of course, the result vq' is technically a 4D vector or a quaternion. However, the first component, q0, will always be zero, so we just throw it away and think of the last three elements as just a vector in 3D representing the original vector v after rotation. q = q0 + qv, the axis of rotation is just the line defined by the vector part qv, and the angle of rotation θ is encoded in q0 using the following transforms:

 

Conversion of Axis and Angle to Quaternion

 

q = cos(θ/2) + sin(θ/2)*vq

Thus,

q0 = cos(θ/2) and qv = sin(θ/2)* vq

 

qv must be a unit vector itself, so that q remains a unit quaternion.

 

If you have Euler rotation angles, you can then create a quaternion from the angles by generating one of the products:

 

q-final = qxθ*qyθ*qzθ

= qxθ*qzθ*qyθ

= qyθ*qxθ*qzθ

= qyθ*qzθ*qxθ

= qzθ*qxθ*qyθ

= qzθ*qyθ*qxθ <-most common transform

 

Yaw, pitch, and roll.

 

where xθ refers to the pitch (angle parallel to the x-axis), yθ refers to the yaw (angle parallel to the y-axis), and zθ refers to the roll (angle parallel to the z-axis. After you have the order of transforms, you can plug in the following formulas for the quaternions qxθ, qyθ, qzθ and perform the multiplication to arrive at qfinal.

 

Euler Angles to Quaternion:

 

qxθ = cos(xθ/2) + sin(xθ/2)*i + 0*j + 0*k

q0 = cos(xθ/2), qv = <sin(xθ/2), 0, 0>

qyθ = cos(yθ/2) + 0*i+ sin(yθ/2)*j + 0*k

q0 = cos(yθ/2), qv = <0, sin(yθ/2), 0>

qzθ = cos(zθ/2) + 0*i + 0*j + sin(zθ/2)*k

q0 = cos(zθ/2), qv = <0,0,sin(zθ/2)>

 

To rotate a vector v using the Euler form do the following for the

example of roll, yaw, and pitch:

 

vq’(0,x’,y’,z’) =(qzθ*qyθ*qxθ )* vq * (qzθ*qyθ*qxθ)*

 

where vq = <0,x,y,z>, the initial vector or point we want to rotate cast into quaternion form. Of course, you only need to compute the product in parentheses once. And because each of the factors qxθ, qyθ, qzθ is of the form below:

 

q(i,j,k) = cos(θ/2) + sin(θ/2)*(i,j,k)

 

The product of terms of this form have a lot of cancellations—thus the product

 

qzθ*qyθ*qxθ, ends up looking like this:

 

q0 = cos(zθ/2)*cos(yθ/2)*cos(xθ/2) + sin(zθ/2)*sin(yθ/2)*sin(xθ/2)

q1 = cos(zθ/2)*cos(yθ/2)*sin(xθ/2) - sin(zθ/2)*sin(yθ/2)*cos(xθ/2)

q2 = cos(zθ/2)*sin(yθ/2)*cos(xθ/2) + sin(zθ/2)*cos(yθ/2)*sin(xθ/2)

q3 = sin(zθ/2)*cos(yθ/2)*cos(xθ/2) - cos(zθ/2)*sin(yθ/2)*sin(xθ/2)

 

 

 

Basic Calculus

 

Physics is why calculus was invented. It is needed to calculate collision detection with real math and real models. Calculus is a form of mathematics invented independently by both Sir Isaac Newton and Baron Gottfried

Wilhelm Leibniz in the 17th century. “The Calculus” (as it’s referred to) was invented as a tool to help solve problems in motion, change, and dynamic systems that standard static algebra of the time couldn’t handle. Thus, calculus is the mathematics of change, or systems in flux.

 

How to perform a mathematical operation that results in infinity? For example the following quotient:

 

      1

q = ----

      y

What happens if y becomes very small, is the question that calculus answers.

 

1/1 = 1, 1/.1 = 10, 1/.01 = 100, 1/.001 = 1000,…

 

As y gets smaller and smaller, the quotient of 1/y gets larger and larger. Therfore the numerator 100,000,000,000. The point is that as the denominator gets very small, the quotient gets larger and larger without boundary. At some point, the denominator will become zero, but what will the quotient become? The answer is plus infinity.

 

x/0 = +∞, +infinity and

 

 x

--- = 0

 

 

Which makes sense, because if you look at the following sequence, you can see it: 1/1 = 1, 1/10 = .1, 1/100 = .01, 1/1000 = .001, …

 

As the denominator gets larger and larger, the quotient gets smaller and smaller, and inthe e nd the result will be zero. The last question you might ask is what happens if both the numerator and the denominator go to infinity? Well, it depends on which one gets there faster. Let’s think about it with common sense. Take a look at this:

 

      500*x

y = ----------

      x*x

 

The question is, what happens when x approaches infinity? Well, in the numerator we have 500*x, and in the denominator we have x*x. Here’s a short run of the numerator and denominator for x ∈ (0,1,2,3,4,5,6,7,8,9,10):

 

A run of numbers in the Quotient 500*x/x2

x           Numerator 500*x) Denominator(x*x) Quotient

0           0                 0               Indeterminate

1           500               1               500

2           1000              4               250

3           1500              9               166.66

4           2000              16              125

5           2500              25              100

6           3000              36              83.33

7           3500              49              71.42

8           4000              64              62.5

9           4500              81              55.55

10          5000              100             50

 

 

 

A graph of the quotient 500*x/x2. Also, take a look at the graph. Although it seems that the numerator is moving very quickly, the denominator is quickly catching up, and thus the quotient is getting smaller and smaller. In fact, the end result will be zero. So does common sense seem right? Well, at first glance, if you didn’t run the sequence, you might say that the numerator is much larger, and it is for small x. But as x gets large, the x*x is much larger than 500*x, so the end result is that the rate of increase of the denominator is greater than the numerator. Hence, the result will be zero in this case.

      500*x

y = ------- = 500/x

      x*x

 

As shown x approaches infinity, anything divided by x approaches zero. This property will be discussed in the section devoted limits.

 

Limits

 

A limit is a mathematical statement that describes has a changing variable that approaches a fixed constant. This is the very point of calculus—being able to write down in a consistent manner changing mathematical concepts. In any case, here’s the general form of a limit statement:

 

Lim f(x) = L

x->a

 

This is read “The limit of f(x) as x approaches a is equal to L.” To compute a limit, you let x approach the limiting value and read off the result.

 

Example 1: Simple limit

Lim 2*x = ?

x->3

 

As x approaches 3, nothing weird happens with f(x). Thus we can simply replace x with 3,

and the limit is equal to

 

Lim 2*x = 2*(3) = 6

x->3

Example 2: Indeterminate limit

 

Lim x*x/3*x

x->0

 

If we let x approach 0, then we get

 

Lim 0*0/3*0 = ? x->0

 

which is indeterminate (0/0 is not computable). We need to see whether we can simplify the limit first, so we can get a better grasp on what’s happening:

 

Lim x*x/3*x

x->0

Canceling out the x terms in numerator and denominator gives us

Lim x/3 = 0

x->0

which clearly equals zero, because 0/3 = 0.

 

Example 3: Infinite limit

Lim 1/(5*x*x + 2*x) = ?

x->∞

 

In this case, the bottom line is that as x gets larger and approaches infinity, (5*x*x + 2*x) gets larger and approaches infinity even faster. Thus the quotient goes to 1/∞, which is equal to zero.

 

Summation and Finite Series

 

Many times when solving problems that are iterative or recursive in nature, we see sequences of numbers or terms that have patterns. For example, take a look at the following mathematical sequence or summation:

 

1+2+3+4+..n

 

The way to write it is to use sigma notation (the Σ symbol). The preceding sequence has a lower limit (1), an upper limit (n), and a rule. In this case, the rule is at each step simply add the next number in the sequence.

b

Σ f(n)

n = a

where a <= b (but not necessarily), a is called the “lower limit,” and b is called the “upper limit.” If n was equal to 1000, how long do you think it would take to add the numbers 1 to 1,000 up? The formula for this, by the great mathematician Karl Gauss:

 

The Sum of the First n Integers

n

Σ k = 1+2+3+…+n = n*(n+1)/2

k = 1

 

Plugging in 1000, we get

1000*(1000+1)/2 = 500500

 

The Sum of the First n Squares

n

Σ k^2 = 1^2+2^2+3^2+…+n^2 = n*(n+1)*(2*n+1)/6

k = 1

 

The Sum of the First n Cubes

n

Σ k3 = 1^3+2^3+3^3+…+n^3 = (n*(n+1)/2)2

k = 1

 

Question:

n

Σ 3*k = ?

k = 1

 

The first thing we do is write out a few terms to see the pattern, and find out whether we can manipulate it into one of our formulas and solve it.

n

Σ 3*k = 3*1 + 3*2 + 3*3 +…+3*n

k = 1

 

Looks like 3 is always there, so let’s factor it out of the sigma sign like this:

n

Σ 3*k = 3*1 + 3*2 + 3*3 +…+3*n

k = 1

n

= 3*Σ k = 1 + 2 + 3 +…+n

k = 1

= 3*n*(n+1)/2

Or in general, for any scalar a:

n

Σ a*k = a*n*(n+1)/2

k = 1

 

 

Infinite Series

 

Finite sums are things that are very tangible—they end somewhere. But there are mathematical sequences that go on forever, but aren’t infinite! How can something go on forever, but not be infinite?

0 + 0 + 0 + …

 

An infinite sum of zeros is definitely still zero. This is the theme of the next section. There are many times when a complex system can run forever, but its height, energy, level, and so on are changing each time.

 

 

 

Domain: 0 1 2 3 … n

        ↓ ↓ ↓ ↓ ↓

Range:  0 5 10 15 5*n

 

In this case, the domain is the positive integers 0, 1, 2 … and the range is also the positive integers. The rule is multiply the integer by 5. The question is, what is the sum of this infinite series? Common sense tells us that the series keeps getting larger and larger, and thus must grow unbounded, and hence the sum is infinity. However, there are other series that do converge to a finite number. For example, series of the following form can converge to a finite value, if the values of a and r satisfy certain constraints:

 

Σ a*r(n-1) = a + a*r + a*r2 + a*r3 +…+ a*rn+ …

n=1

 

where a and r are real numbers, and a ≠ 0. Infinite series of this kind are called geometric series.

 

Here’s an example:

 

a = 5, r = 1/2

Σ a*r(n-1) = a + a*r + a*r2 + a*r3 +…+ a*rn+ …

n = 1

= 5 + 5*1/2 + 5*(1/2)2 + 5*(1/2)3 + …

= 5 + 5/2 + 5/4 + 5/8 + …

 

 

The series is getting smaller and smaller, and this is confirmed by the plot of points. In fact, when n reaches infinity, the terms will approach zero.

 

Sum of a General Geometric Series

Σ a*r(n-1) = a + a*r + a*r2 + a*r3 +…+ a*rn+…

n = 1

the sum = a/(1-r), for |r|<1

It tells us how to compute the sum of an infinite collection of expressions in a closed form—math. Using theformula on our series from the previous example with a = 5, and r = 1/2, |r| is less than 1, the sum is a/(1-r) = 5/(1/2) = 10.

 

Derivatives

 

The derivative of a function is the instantaneous rate of change of that function. For example, suppose you have an object in a game, and its position is described by the following formula, as shown:

 

x = x0 + vel*t

 

This obviously means that the position x at any time is x0 plus the factor vel*t, where t could be time, or some artificial variable, like the current frame. Given the formula for x, what is the instantaneous rate of change of x? The answer to this is in the definition of x, because with each increment of t, x will change by vel*dt, or velocity*1. Thus, the instantaneous rate of change is the rate factor vel itself. If we differentiate x with respect to t, the result is the rate of change of x with respect to t. The derivative of the position is the velocity.

 

The derivative looks like:

d/dt * x(t)

which means take the derivative of x with respect to t.

d/dt * x(t) = vel

 

Definition of Derivative

 

A curve or function of x, f(x) also, labeled a, which has the value x0, and b, which has the value x0+h (h is just a number), and between the two points you see a tangent line with a slope. The slope of this tangent line is shown in

 

Definition of the Tangent Line

 

dy f(x0+h) – f(x0)

slope = --- ----------------

dx h

This slope is only an average or approximation, but what if we want the slope exactly at x0? We can just make h smaller and smaller to find this. We want to make it infinitely small (zero), so that we are dead on x0. Alas, there’s a problem with this! Look at this limit:

 

lim f(x0+h) – f(x0)

h->0 ---------------

h

As h approaches zero, this limit looks like it might approach infinity, and we are fragged! However, this is the definition of the derivative:

 

 

f’(x) = lim f(x0+h) – f(x0)

h->0 ---------------

h

The notation f'(x), or “f primed," means “the derivative of f with respect to x,” so that’s just notation. Similarly, f’’(x) would mean “the second derivative of f with respect to x,” or the derivative of the derivative. In general, these all mean the same thing:

 

1. f'(x)—The derivative of f with respect to x. Both the function and the variable are mentioned.

 

2. (d/dx)*f(x)—The derivative with respect to x of the function. Emphasizes that differentiation is an operator.

3. df/dx—Very similar to number 1, but in another format. Emphasizes both the function f and the variable to differentiate. If the limit exists then it is the derivative.

 

Derivatives of Simple Polynomials

 

Computing the derivatives of polynomials is the simplest, so let’s start here. First, the derivative of the sum of terms in a polynomial is simply the sum of each of the derivatives:

 

f(x) = f1(x) + f2(x) + … + fn(x)

f’(x) = f1’(x) + f2’(x) + … fn’(x)

 

To compute the derivative of any polynomial term, here’s what you do:

 

Let f(x) = a*xn

f’(x) = n*a*x(n-1)

Example 1:

f(x) = 5*x3

f’(x) = 3*5*x(3-1) = 15*x2

 

Example 2:

f(x) = 3*x2 + 2*x + 5

or, writing out all the terms,

df/dx = 3*x2 + 2*x1 + 5*x0

df/dx = 2*3*x(2-1) + 1*2*x(1-1) + 0*5*x(0-1)

= 6*x1 + 2*x0 + 0

= 6*x + 2*1 = 6*x+2

 

NOTE

 

Note that the derivative of a constant is zero. Many times, one notation is more convenient than another, as you will see. Before moving on, let’s look at a couple of general rules for computing derivatives.

 

Derivatives of Products: The Product Rule

 

When you compute the derivative by taking each expression separately, rather than computing each one is called the product rule. It looks like this:

 

Given u(x) and v(x) are functions of x, (d/dx)*(u * v) = u*(dv/dx) + v*(du/dx)

which reads “The derivative of the product u multiplied by v is u multiplied by the derivative of v with respect to x added to v multiplied by the derivative of u with respect to x.”

 

Example:

f(x) = (3*x2 + 3) * (5*x)

Let

u(x) = (3*x2 + 3), v(x) = (5*x)

then

f’(x) = u(x)*v’(x) + v(x)*u’(x)

= (3*x2 + 3)*5 + (5*x)*(6*x)

 

Derivatives of Quotients: The Quotient Rule

 

Computing the derivative of a quotient can be accomplished using the product rule and inverses, but to make life easier, we usually just use what’s called the quotient rule and leave the problem in its original form. Here it is again, in a slightly modified notation:

 

Given u(x) and v(x) are functions of x,

(d/dx) * (u/v) = [ v*(du/dx) – u*(dv/dx) ]

---------------------------------

v2

 

which reads “The derivative of the quotient u divided by v is equal to v multiplied by the derivative of u with respect to x minus u multiplied by the derivative of v with respect to x, quantity divided by v squared.”


Example:

 

Given

4*x3 – 3

f(x) = ---------

-3*x2

Let

u(x) = (4*x3 – 3), v(x) = (-3*x2)

then

[v(x)*u’(x) – u(x)*v’(x)]

f’(x) = -------------------------

v(x)2

= [(-3*x2)*(12*x2) - (4*x3 – 3)*(-6*x)]

----------------------------------------

(-3*x2)2

 

Again, note the change of notation. Also, we could simplify this if we wanted to.

 

The Chain Rule

 

Take a look at the following function:

f(x) = sqrt(x2+1) = (x2+1)1/2

 

This problem  could be solved by finding the derivative of f(x) directly (if we can), or we could think of f(x) as a composition of two or more functions. Composition means nothing more than one function is the parameter to another. In this case, if we let g(x) = (x2+1), and f(x) = sqrt(x), we can write this:

Given

f(x) = sqrt(x) = (x)1/2

and

g(x) = (x2+1)

 

If we replace the “x” in the definition of f(x) with the function for g(x), we have composed g with f, or mathematically:

f(g(x)) = (f • g)(x) = (x2+1)1/2

 

 

NOTE

 

Note that the notation f(g(x)) and (f • g)(x) are equivalent. As another example, let f(x) = sin x, and g(x) = (2*x+3), then f composed with g is

(f • g)(x) = sin (2*x+3)

 

The chain rule states that you can compute the derivative of a function by first computing the derivative of the composition, and then multiplying that by the derivative of the inside function. Then, if the inside function needs to be further simplified as more compositions, you continue the process.

Mathematically, the chain rule can be stated as the following:

 

(d/dx)f(g(x)) = f’(g(x)) * g’(x)

Let’s take another look at the first example with f(x) =(x)1/2, g(x) = (x2+1), and apply the rule.

f(g(x)) = (x2+1)1/2

 

f’(g(x)) = f’(g(x)) * g’(x)

= (d/dx)(g(x)1/2) * (d/dx) g(x)

= ?*((x2+1)-1/2 * (2*x)

= x/(x2+1)1/2

 

Derivatives of Trigonometric Functions

 

sin x cos x

cos x -sin x

tan x sec2 x

cot x -csc2 x

sec x = 1/cos x sec x * tan x

csc x = 1/sin x -csc x * cot x

f(x) = cos2 x

 

Product rule with

f(x) = cos(x) * cos(x)

Let

u = cos(x), let v = cos(x)

then

f’(x) = u*(dv/dx) + v*(du/dx)

= cos(x) * sin(x) + cos(x) * sin(x)

= 2*cos(x) * sin(x)

 

 

Let u = a, v = transcendental(x), where the trig function could be anything. Then we have:

 

f’(x) = u*(dv/dx) + (du/dx)*v

= a * transcendental’(x) + 0

= a * transcendental’(x)

 

Note that the derivative of u is 0, so the product of the second term is also 0, thus leaving us with the original constant multiplied by the derivative of the transcendental function. Here’s an example:

 

Given

f(x) = 3*cos(x)

f’(x) = -3*sin(x)

Finally, let’s look at problems of this form:

f(x) = a*cos(b*x+c), a*sin(b*x+c), a*tan(b*x+c), etc.

 

There’s a multiplier in the parameter part, along with a constant that models the time multiplier and a shift. This is just a composition, so use the chain rule here, letting the inside function be g(x) and the outside function be f(x). Let’s try figuring out

 

a*sin(b*x), as all the others are identical.

 

Given

f(x) = a*sin(b*x+c)

f’(x) = a*[(d/dx)sin(b*x+c)]

Thus, our problem really boils down to computing this:

f(x) = sin(b*x+c)

 

The chain rule results:

 

Let

g(x) = (b*x+c)

f(x) = sin(x)

then

f(g(x)) = sin (b*x+c)

f’(g(x)) = f’(g(x)) * g’(x)

= (d/dx)sin(g(x)) * (d/dx)(b*x+c)

= cos (b*x+c) * b

 

Further.

f(x) = a*sin(b*x+c), f’(x) = a*[(d/dx)sin(b*x+c)]).

f(x) = a*sin(b*x)

f’(x) = a*(cos(b*x+c)* b)

= a*b*cos(b*x+c)

 

Integrals

 

Integration is the opposite of differentiation— or antiderivative. If you were to differentiate f(x) to arrive at f'(x), what would you do to f'(x) to get back to the original f(x)? This process is called integration. The first and purest way to look at the antiderivative is with its definition:

 

Given a function

 

f(x) and its derivative f'(x), the antiderivative F(x) is a function such that if you differentiate it, you get f(x):

F’(x) = f(x)

 

If you have a function f(x), and another function capital F(x) that you want to be the antiderivative of f(x), the derivative of F'(x) will equal the original function f(x). That’s not that useful, so let’s try an example like f(x) = 2*x. Now, the antiderivative of (2*x) is a function F(x), such that when the derivative of it, the result would be (2*x). F’(x) = 2*x

 

What function when the derivative is taken, equals (2*x)?

The answer is x2 because (d/dx)x2 = 2*x(2-1) = 2*x.

 

The antiderivative of any term of the form a*xn. We just reverse the process of differentiation, which states to multiply by the exponent and then decrease the exponent. Reversing that, we get the process for integration, which must be to divide by the exponent and then add one to the exponent. Mathematically, the antiderivative of a*xn is a*xn = (a/(n+1))x*(n+1) + c.

 

Definition of Antiderivative

 

Integration is the process of computing the antiderivative of a function, and is written using the ∫ symbol, like this:

 

f(x)dx = F(x) + c

f(x) is the function we want to find the antiderivative of, F(x) is the antiderivative, and c is the constant of integration. The function g(x) = 2*x+1 differentiated is this:

 

g(x) = 2*x1+1

g’(x) = 1*2*x(1-1) + 0

= 2

 

The result is 2, which was just an example to show you that constants disappear when you differentiate. Now if we wanted to compute the antiderivative of that 2, knowing that we should end up back at (2*x+1). Using our antiderivative rule relating functions of the form a*xn to the antiderivative (a/(n+1))x*(n+1):

F’(x) = 2*x0

F(x) = (2/1)*x(0+1) = 2*x

 

A functions derivative and then used it as the new starting point and found its antiderivative thinking we would end up in the same place. You lost some information—the constant 1.0 in this case. This leads us back to the definition of an integral:

 

f(x)dx = F(x) + c

 

The c takes this factor into consideration; that is, we know we could potentially lose information when we integrate to find the antiderivative. Only in cases where c = 0 can we forget about it; otherwise, we must keep this in mind. Thus in the example, we just computed that we need to add an arbitrary constant to the result, giving us (2*x+c).

 

Integration is the opposite of differentiation, and the result is called the antiderivative. We know that the antiderivative of functions of the form a*xn is [(a/(n+1))x*(n+1) + c], where c is the constant of integration, and may be non-zero. In a moment we will talk about integrals of trig functions, but now I want to give you something more tangible to think about in relation to integration.

 

A Geometric Interpretation of Integration

Differentiation is like computing the instantaneous rate of change or slope of a function. That is, when you differentiate a function f(x), you wind up with another function f'(x) that is the slope of f(x) for any x. Integration has a similar geometric interpretation in the opposite sense. Take a look at

 

A common parabola function f(x) = x2 in the interval of [0,5]. Additionally, I have shaded in the area under the curve. Interestingly enough, integration computes the area under the curve! Let’s test that out. Given the initial function f(x) = x2, let’s integrate it using the formula:

 

f(x)dx = F(x) + c

and

f(x) = x2

∫ x2dx = F(x) + c

 

Using our antiderivative formula (a/(n+1))x*(n+1), we get

∫ x2dx = x3/3 + c

 

Now, what’s c? That’s where the interval comes into play ([0,5]). We need this to lock into and compute c. The integrals is called indefinite integrals they compute a family of functions for the antiderivative because c is unknown, but definite integrals compute the exact value for c, and hence a single antiderivative. The definite integral a little differently.

 

 

b

f(x)dx

a

where [a,b] are the limits of integration: Here it is again.

 

Step 1: Compute the integral.

5

∫ x2dx = [x3/3 + c]

0

 

Step 2: Plug in the limits of integration and evaluate the integral at the upper limit and lower limit and subtract.

5

= [x3/3] = [(5)3/3 - (0)3/3]

0

= [125/3 – 0]

= 41.66

 

Compute the integral as usual, then after you have the general form of the integral, you plug the upper limit of integration into the result to arrive at a number, then do the same with the lower limit, and then subtract. This gives you an exact answer

 

 

A triangular approximation of the area under the curve f(x) = x2. In this case, the answer should be the area under the curve f(x) = x2 in the interval of [0,5]. We get 41.66 roughly; let’s see whether that’s in the ballpark. Because there are no formulas for computing areas under curves, we can use a triangular approximation. The height of the triangle is 25 and the width is 5, so the area is

 

A = ?*width*height = ?*5*25 = 62.5

 

which tells us that we are in the ballpark, because the area under the curve is of course less. In fact, the area is exactly 41.66.

 

Integration Formulas

Okay, so now we have mathematical definition for integral, a geometric interpretation, and we know how to integrate both indefinite and definite integrals. Now let’s take a lookat some formulas for integration.

 

Integration Formulas

 

Integral Antiderivative

a*un du (a/n+1)*u(n+1) + c

∫ sin u du -cos u + c

cos u du sin u + c

sec2 u du tan u +c

csc2 u du -cot u + c

sec u * tan u du sec u + c

csc u * cot u du -csc u + c

 

Summing is exactly what integration does. It sums a function from one point to

another. That’s a very useful operation, and absolutely necessary when calculating physics models. Because most of the time, you will have a model:

 

Position: x(t) = x0 + v*t

Velocity: v(t) = v0 + a*t

 

where the acceleration a is constant. The time derivative of the position x(t) is equal the velocity v(t), or (dx/dt)x(t) = v(t), or put yet another way:

 

x’(t) = v(t)

That means if I have the formula for v(t), its antiderivative must be equal to x(t).

 

Mathematically, we have

x’(t) = v(t)

So, integrating both sides:

x’(t) dt = ∫ v(t) dt

 

The left-hand side is just x(t), because the antiderivative of the derivative of a function

f'(x) must be f(x) again. Thus we have:

x(t) = ∫ v(t) dt

 

And we already know the form of v(t) = v0+a*t; plugging it into the indefinite integral, we get

 

x(t) = ∫ v0+a*t dt = [v0*t + 1⁄2*a*t2 + c]

And now all we need is c. But, if we use the initial conditions t = 0, x = x0, and v = v0, we get

[0 + 0 + c] = x0

therefore c = x0.

 

Putting it all together, we get the final formula for motion as a function of time, and the initial position and velocity with constant acceleration:

x(t) = ∫ v0+a*t dt = [v0*t + 1⁄2*a*t2 + x0]

 

To integrate the velocity function to find the position is exactly what physics modeling is all about. You run the model, compute collisions and forces, and then you need to integrate numerically to find the new position of all the objects in the game.

 

…and that is the foundation of math. “Do you think that that’s air you are breathing.Morpheous, the Matrix.

 

 

The brain will solve any problem if presented to it difference in quantity change and/or difference of rate of difference of quantity in the form of a solution set of generalization(s). The generalization is a landscape. The quality of landscapes have been described in general in the previous chapter and is sufficient for all topic in this text and beyond. The landscape is renormalized in RC->G process progressively or regressively in respect to quantity or rate of quantity for any property the brain receives. You have to format questions correctly understanding how the brain works to get answers to questions. There is a caveat to this fact. The brain is like everything else a quantum machine. The emergent mind, which is a perception, has limitations. The inputs the brain receives originate from local and non-local sources of the field. The mind has been studied and experimentally proven perception limitations in the form of the emergent mind's:

 

Process speed

 

 

 

 

The brain will perform its conception operation on garbage and information. Its error correction is perception and bad perception will corrupt processed data or perception of any kind. Only efficient perception will permit error correction on conception. Efficient CRP->G is flow of conception, persistent resilient reception and landscape constructing perception. The brain field paradigm is a continuum and therefore inseparable. Conception is modifiable by perception in the form of the effort of learning.

 

 

What is Electricity?

 

 

File:Standard Model of Elementary Particles.svg

 

 

All matter affect electrical properties due to the fundamental particle, the electron. Renowned scientist Erwin Schrödinger, 1926 gave the most accurate mathematical description of the behavior of electrons. The eponymously named Schrodinger equation is a statistical probability average, which predicts the most likely location of an electron, which is naturally observed in a region near the nuclei of atoms and as free particles, which occupy discrete probability amplitude, most accurately behaving as standing wave.

 

i\hbar\frac{\partial}{\partial t} \Psi(x,\,t) = \hat H \Psi(x,\,t)

 

where:

 

i is the square root of negative one

\hbar is the reduced Planck's constant

t is time

x is a place in space

\Psi(x,\,t) is the wave function

\hat H is the Hamiltonian energy operator:

 

The basic principle is that the wave function Ψ permeates all of space and evolves according to Schrodinger’s equation. The function Ψ encodes the probability of finding the electron particle within any given region (as well as probabilities for its momentum, energy and so on). This theory can predict the outcomes of experimental observation with impressive accuracy.

 

Computers are tools which are tasked with converting the known world into an electronic system to perform meaningful operations on input. Math is a human language construct which communicates the world as we understand it. The world or field is a substrate which expresses a system of operations very similar to a computer.

 

Scale or sizing a system is a fascinating view of the field as we delve into the understanding of the world. Here, think of world as the mind’s conception of the field. The field is and the conception of it is our connection. When you scale an understanding of electronic properties, it ranges currently from quantum electrodynamics theory of Schrödinger to Maxwell electronic functions that describe attraction and repulsion of these fundamental buggers, the electron.

 

The Maxwell Equations formalize our understanding of the behavior of electrons in the field like this.

 

Equation 1: Gauss' Law           Ñ · D = ρν

 

Equation 2: Gauss' Magnetism Law Ñ · B = 0

 

Equation 3: Faraday's Law        Ñ · E = - ∂B / ∂t

 

Equation 4: Ampere's Law         Ñ X H = - ∂D / ∂t + J

 

Related Equations

Continuity Equation

The Wave Equation Math   Ñ X Ñ X H = Ñ X (Ñ X H)- Ñ ˆ 2 H

The Curl                 Ñ X

Divergence               Ñ ·

Partial Derivative g(x,y,z) = ∂ƒ(x,y,z)/∂x

 

Vector Equation

 

They govern themseles in nature. The way the electric and magnetic field distribute themselves what kind of physical phenomina give rise to them.

 

1. Gausses Law - Charges of the same sign repel each other. The divergence symbol express that fields are positioned around a point. The D represents the charge and it equals ρν - Electric Charge Density  ρν - The greek symbol pho (electric charge) denotes electric charge, and the subscript V indicates it is the volume charge density. This density is measured in columbs. For a small point charge an eminating field line is negative and flows inward or if it is positive the charge field eminates outward.

 

2. Gausses Law of Magnetism-  The divergence of the magnetic fiels is zero. There is no isolated magnetice charge. You cannot find a magnetic monpole. You will never fiend a magnetic pole or field eminating outward from a point electric partilcle, according to this law. Which is a bit speculative with the recent discovery of monopoles magnetic particles, but that’s another story.

 

3. Faradey law - Dell cross means curl. Describe how the field wraps around the flow of electric fields. Here the divergencence is the curl and is eqaul to the rate of change of the magnetic field in repect to time. This magneticfield was originally discovered by measuring the magnetic field through an electric circuit. The curl of the electric field is related to the time rate of change of the magnetic field.

 

4. Ampere law - The curl of the magnetic field in respect to the change of the electric field in repect of time plus the electric current density. Current flow in a wire and magnetism wraps around it. The displacement current density occurs at the gaps of a capacitor. Current crosses a gap because of the magnetic presence at the end of a conductor. Permeability  µ - The permittivity of a material relates the Electric Flux Density to the Electric Field. Similarly, materials can be classified by their permeability, which relates the Magnetic Flux Density to the Magnetic Field. The permeability is most often denoted by the Greek symbol mu (permeability symbol). Don’t confuse permeability with conductivity  σ. Electrical conductivity is a measure of how easily electric current can flow through a given material. That is, for a given electric field in a material, a higher conductivity material will produce more current flow than a low conductivity material.

 

 

Thus the wave equation. The wave going in the z  direction is equal to the change in the rate of change. Light propagation without a conduit like fiber optic wire occurs because the wave nature of light that is electromagnetism curling around electric field in relation to time change which continues until the frequency of light becomes longer and longer and less detectible to measure or see.

 

Common colors

400 to 450 nm Violet

450 to 500 nm Blue

500 to 550 nm Green

550 to 600 nm Yellow

600 to 650 nm Orange

650 to 700 nm Red

 

 

 

 

 

The manipulation of electrons is the basis of biological and electronic computation. Electron voltage, current, and Resistance are synonymous with more familiar natural phenomena like water pressure, flow and impedance in a stream. Electronic components such as diodes and transistors form the damns and rivers of the integrated circuit. These circuits are combined to create switches, which are engineered to create logic gates. Using Boolean mathematics, these logic gates are arranged to perform arithmetic operations. The surface of an IC chip is micro cities, housing and controlling the traffic of the electron community. Layers of neuron paths in brains and hardwired strategic gates make computation a reality.

 

Electrons may be released from their atoms by various means. Some atoms of certain elements release their electrons more readily than atoms of other elements. If an atom has an equal number of Electrons and protons, it is said to be in balance. If an atom has given up some of its electrons, the atom will then have a positive Charge and the matter that received the electrons from the atom

will be negatively charged. Some external force must be used to transfer the electrons.

 

Contact between the two surfaces results in the one being robbed of some of its negative electrons, thereby leaving it positively charged, while the other

Surface acquires a surplus of negative electrons and is thereby negatively

charged. It is important to note that this surplus of negative electrons doesn’t come from the atomic structure of the fur itself. It is found that, in addition to the electrons involved in the structure of materials, there are also vast numbers of electrons “at large.” It is from this source that the negatively charged surface draws its negative charge of electrons.

 

When a body acquires an electrical charge as, for example, the hard rubber rod or the glass rod previously described, it is customary to say that the lines of force emanate from the surface of the electrified body. By definition, a line of electrical force is an imaginary line in space along which electrical force acts. The space occupied by these lines in the immediate vicinity of an electrified body is called an electrostatic field of force or an electrostatic field.

 

 

Electric Current

 

We learned earlier that static electricity refers to electrical charges that are stationary—that is to say, a surplus of electrons, or the lack of same, that stay in one place, not in motion. Electrons in motion constitute an electric current. Thus, if electrical pressure from a battery, generator, or other source is applied to an electrical conductor, such as a copper wire, and the circuit is closed, electrons will be moved along the wire from negative to positive. These electrons pass from atom to atom and produce current. The electrons that move are free electrons.

 

There are basically three forms of electrical current, namely (1) direct current (DC), (2) pulsating direct current (pulsating DC), and (3) alternating current (AC).

 


DC motor generates current flowing steadily in the direction represented by the arrows.

 

 

Representation of one alternation and one cycle, which consists of two alternations.

 

 

Insulators and Conductors

 

An insulator opposes the flow of electricity through it, whereas a

conductor permits the flow of electricity through it. It is recognized

that there is no perfect insulator.

 

 

Definitions

 

A number of definitions will be given at this point in the course. There will be others given as we progress. The reason for giving these here is that we may use electrical terminology as we progress and keep the explanations to a minimum. Insulation: A material that by virtue of its structure opposes the free flow of current through it. Commonly used insulating materials are asbestos, ceramics, glass, mica, plastics, porcelain, rubber, and paper.

 

Conductor: A material that allows the free flow or passage of an electric current through its structure; generally, any wire, cable, or bus suitable for carrying electrical current.

 

Ampere (A): The unit of intensity of electrical current (I); rate of flow of electric charge. One ampere will deposit silver in an electrolytic cell at the rate of 0.001118 gram per second.

 

Ohm (Ω): The unit of resistance (R) to an electrical current; a column of mercury 106.3 cm long and having a mass of 14.4521 grams (approximately) with a 1 square millimeter cross section at 0° Celsius has a resistance of 1 ohm.

Units and Definitions 15

 

Volt (V): The unit of electrical pressure (E); electromotive force (emf); potential difference. The amount of electrical pressure required to force 1 ampere through 1 ohm of resistance.

 

Coulomb (C): The quantity of charge that passes any point in an electric circuit in 1 second when 1 ampere of current is present.

 

Watt (W): The electrical unit of energy; rate of doing work (P). The product of the applied volts and the current in the circuit: 1 ampere


 1 volt [1] 1 watt.

 

Kilowatt (kW): One thousand watts.

 

Kilowatt-hour: One watt for 1000 hours; or 1000 watts for one hour; or 100 watts for 10 hours, etc. Unit for recording electrical power use.

 

Energy: The ability to do work. Energy can be neither created nor destroyed; it is a conserved quantity. It can, however, be converted from one form to another.

 

Foot-pound: Unit for measuring work. It is the energy required to move a weight of 1 pound through a distance of 1 foot.

 

Joule (J): The unit of work (W): force acting through distance. One ampere X 1 volt X 1 second = 1 joule. One watt X 1 second = 1 joule. One coulomb X 1 volt = 1 joule.

 

Farad (F): The unit of capacitance (C). A capacitor has a capacitance of 1 farad when one coulomb delivered to it will raise its potential 1 volt. The farad is an impractically large quantity, so you will hear more of microfarads, or

1/1,000,000 farad (10–6 farad).

 

Henry (H): The unit of electromagnetic induction. A circuit possesses an inductance of 1 henry when a rate of current variation of 1 ampere per second causes the generation therein of 1 volt.

 

Megawatt (MW): 1,000,000 watts; 106 watts.

 

Volt-amperes (VA): A term used to describe alternating current; since we usually have opposition to the change of direction of current in an alternating-current circuit, the volts and amperes are very commonly out of phase. (This will be

explained later.)

 

Kilovolt-amperes (kVA): One thousand volt-amperes. Power Factor (PF): The phase displacement of volts and amperes in an AC circuit due to capacitance and/or inductance. The cosine of the angle of lag or lead between the alternating

current and voltage waves. (This will be explained more fully later.)

 

Hertz (Hz): The new name for a cycle per second. Alternation: One-half of a cycle. Frequency (of AC current): The number of hertz completed.

 

Magnetic Units

 

The following definitions of magnetic units are given mainly for later reference.

 

Gauss (G): Unit of magnetic flux density, equal to one line of magnetic flux (maxwell) per square centimeter.

Maxwell (Mx): Unit of magnetic flux, one magnetic line of flux.

 

Ampere-turn (At): The magnetomotive force produced by a coil, derived by multiplying the number of turns of wire in the coil by the current in amperes through it.

 

Oersted (Oe): Unit of magnetizing force equal to 1000/4π ampere-turns per meter.

 

Permeability (µ): Expresses the ratio of magnetic flux density produced in a magnetic substance to the magnetic field intensity that occasions it.

 

Temperature Units

 

Celsius (°C): A temperature scale, formerly termed centigrade and used extensively in electrical work and in the metric system.

 

Fahrenheit (°F): A temperature scale commonly used under our system of temperature recording. On the Celsius scale, 0°C is the temperature at which water freezes, and 100°C is the temperature at which water boils. Both of these refer to sea level, or a barometric pressure of approximately 14.7 pounds per square inch.

 

On the Fahrenheit scale, water freezes at 32°F and boils at 212°F. These, as with the Celsius temperature scale, are at sea level. It is easy to convert from Celsius to Fahrenheit and from Fahrenheit to Celsius.

For Example:

 

To convert 100°C to Fahrenheit, take 9/5 of 100 and add 32; thus 9/5 of 100 = 180, and 180 + 32 = 212°F.

 

To convert 212°F to Celsius, take 212 - 32 = 180, and take 5/9 of 180 = 100°C. In electrical trade, much electrical equipment is rated in Celsius temperature (°C), but in some cases the equipment may be rated in Fahrenheit (°F), or in a combination of °C and °F.

 

 

Ohm’s Law and Power

 

There is another series of equations related to Ohm’s law because of the fact that the power in watts in any electrical circuit is equal to the current in amperes multiplied by the emf in volts. Thus: where

 

P = power in watts

I = current in amperes

E = emf in volts

This formula may be transposed to find either I or E. Thus:

I = P * E and E = P * I

 

So if P = 100 watts and I = 4 amperes, we find E= P/I, or 100 W/4

A = 25 V. Since R = E/I and E = P/I, R = P/I^2,  I^2 =  P/R  and  I =  √P/R,  and  P = I^2R

 

Then, if P = 100 watts and R = 4 ohms, then I^2 100 W/4 Ω = 25 A^2, and the square root of 25 is 5, so I=5 amperes. Further, since P=EI and I=E/R, we have:

 

E^2/R =  P    R =  E^2 /P     E^2 =  RP   and   E = √RP

If R = 4 ohms and P = 100 watts, then E2=PR = 100 W X 4Ω = 400 V2. The square root of 400 V^2 is 20 V. Thus, E=20 volts.

 

 

Capacitance

 

The unit of capacitance is explained in Chapter 2 and is designated by F. A capacitor thus has a capacitance of one farad when one coulomb delivered to it will raise its potential one volt. The farad is a very large unit of measurement, so we usually talk in terms of microfarads (µF) or one one-millionth of a farad (10^-6 farad).

 

Let Q be the charge of a capacitor in coulombs, E the applied potential difference in volts, and C the capacitance of a capacitor in farads. Then

 

Capacitance = Charge / Potential Difference  or C = Q/E

 

As previously stated, the capacitance of a capacitor is affected by the material and dimensions of the dielectric. The capacitance is directly proportional to the effective area of the dielectric and inversely proportional to the thickness of the dielectric. Capacitance is also proportional to the dielectric constant of the material between the plates.

 

Let A be the total area of dielectric between the plates, in square inches, s the thickness of dielectric in inches, ĸ the dielectric

 

Capacitance = Charge /Potential Difference or C = Q / E

 

Resistance

 

In the latter part of Chapter 1 a short discussion on insulators and

conductors was given. It was stated that there is no perfect insulator.

Also, a few metals in the order of their conductivity appeared,

if you wish to refer back to this part.

 

The word resistance comes from resist, meaning to oppose. We may compare it to the friction of liquids flowing in pipes. We have two water pipes, one 1⁄2 inch in diameter and one 1 inch in diameter, both connected to the same source of water and both receiving the same water pressure. The flow will be far less out of the 1⁄2-inch pipe than out of the 1-inch pipe due to more friction (restriction) in the smaller pipe. The basic principle is the

same for conductors and resistance: Smaller conductors have more resistance and less current-carrying capacity than larger conductors of the same material.

 

1. METRIC TERMS

a. 1,000,000,000               Billion – GIGA –G

b. 1,000,000                   Million – MEGA –M

c. 1,000                       Thousand- Kilo –K

d. 1/1000                      Thousandth – Milli –m

e. 1/1,000,000                 Millionth  - MICRO -µ

f. 1/1,000,000,000             Billionth  - NANO – n

g. 1/1,000,000,000,000         Trillionth – PICO - p

 

 

 

 

0 Black  4 Yellow   8 Grey  20% no color

1 Brown  5 Green    9 White 

2 Red    6 Blue     5% Gold

3 Orange 7 Violet   10% Silver

 

 

Statement of Ohm’s Law

 

The fundamental statement of Ohm’s law is as follows:

The current in amperes in any electrical circuit is numerically

equal to the electromotive force (emf or voltage) in volts impressed

upon that circuit, divided by the entire resistance of the circuit in

ohms. The equation may be expressed where

 

I = intensity of current in amperes

E = emf in volts

R = resistance in ohms

 

If any two quantities of this equation are known, the third quantity

may be found by transposing, as Analogy of Ohm’s Law Hydraulic analogies may be used to illustrate electrical currents and the effect of friction (resistance).

 

We all know from experience

 

E = I/R R = E/I and I = E/R

 

 

 

 

 

 

 

 

 

 

 

 

4. DC Circuits

 

a. OHM’s law

 

E = IR

I = E/R

R = E/I

 

b. Resistors in series

 

Rt = R1 + R2 + R3 + ….

It = I1 = I2 = I3 = ….

Et = E1 + E2 + E3 + ….

 

 

c. Resistors in parallel

Rt = R1 x R2 / R1 + R2

Rt = 1/ 1/R1 + 1/R2 + 1/R3 … Different value resistors

R1 = R/N same value resistors

SYMBOLS

LETTER             MEANING              UNIT OF

SYMBOL                                  MEASURE

E, V               Voltage              Volt

I                  Current              Ampere

R                  Resistance           Ohm

C                  Capacitor            Farad

L                  Inductor             Henry

X0                 Capacitive Reactance Ohm

X1                 Inductive Reactance  Ohm

Z                  Impedance            Ohm

 

 

 

 

Capacitor

a.  Xc = 1/2πfC

b.  Capacitors in a series add like resistors in parallel.

c.  Capacitors in a parallel add like resistors in series.

 

Inductor

a.  X = 2πfL

b.  Inductors in a series add like resistors in parallel.

c.  inductors in a parallel add like resistors in series.

 

Time Constants

a.  TC = RC Time it takes a capacitor to charge 63.2% of applied voltage.

b.  TC = L/R Time it takes an inductor to charge to 63.2% of available current.

Where: T = Time constant in seconds

       R = Resistance in ohms

       C = Capacitance in farads

       L = Inductance in henries

       5T= Discharge or FULL charge

 

From Math * Logic Too Machine

All maths are composed of measure of increase, and decrease the only changes are method, interpretation and symbol designation. Integrating a solution would require the application of the rules of integration and at the end would be addition and subtraction.

 

The computer by conducting Boolean algebraic operations logic into their physical equivalents of electronic circuites constructs and electrons flow control using various material properties. Boolean algebra is a system of math which is capable of the 7 postulates of math and solutions always only have two answers, yes or no. This solution set is important because it turns out that minds perception of the world, as we understand it has become increasingly binary. One or zero, yes and no or discrete transition in energy levels as found in black body experimentations, though not completely analogous statements, discrete states is the point here. The Universe doesn't seem to be continuous or analogous at all but discrete. Or at least we perceived it as such and there in lies our understanding of why the mind works the way it does, mathematics and thus the way computers are engineered to compute the way they do. Discretely, sequentially and by iterative amounts or quantized.

 

The computer system operates at 2 discrete levels to operate they are 0 and 1. This is called binary. The binary number system combined with Boolean logic algebra is implemented with electronic components to perform computer processing. Another numbering system is the hexadecimal system.

 

Here is the binary system of counting:

 

      Binary            

            0         

           1         

••          10        

•••         11          

••••        100       

•••••       101         

••••••      110         

•••••••     111         

••••••••    1000        

•••••••••   1001 

 

This is the digits for the hexadecimal numbering system is:

Hexadecimal numbers are less cumbersome to deal with than binary numbers.

 

The binary counting system is capable of all mathematical operations as a base 10 system but all operations result in some series of zero or one. Here are some examples.

 

 

Rules of Binary Addition

* 0 + 0 = 0

* 0 + 1 = 1

* 1 + 0 = 1

* 1 + 1 = 0, and carry 1 to the next more significant bit

For example,

00011010 + 00001100 = 00100110

       

 Rules of Binary Subtraction

* 0 - 0 = 0

* 0 - 1 = 1, and borrow 1 from the next more significant bit

* 1 - 0 = 1

* 1 - 1 = 0

 

Rules of Binary Multiplication

* 0 x 0 = 0

* 0 x 1 = 0

* 1 x 0 = 0

* 1 x 1 = 1, and no carry or borrow bits

 

 

Note:  The rules of binary multiplication are the same as the truths of the AND gate.

 

Another Method:  Binary multiplication is the same as repeated binary addition; add the multicand to itself the multiplier number of times.

 

 

Binary Division

Binary division is the repeated process of subtraction, just as in decimal division.

For example,

00101010 ÷ 00000110 = 00000111

       

Two Valued Boolean Algebra:

A two valued Boolean Algebra is defined on a set of two elements, B = { 0, 1 }, with rules for the two binary operators + and .

x

y

Xy

0

0

 0

0

1

 0

1

0

 0

1

1

 1

 

x

y

x+y

0

0

 0

0

1

 1

1

0

 1

1

1

 1

x

x'

 

0

1

 

1

0

 

 

These rules are exactly the same as the AND, OR, & NOT  operations, respectively.

Now show that the Hunthington postulates are valid for the set  B = { 0, 1 } and the two binary operators defined above.

1. Closure

The result of each operation is 1 or 0 and 1, 0 B.

2. From the table an identity element with respect to + is 0, since       0 + 0 = 0

            0 + 1 = 1 + 0 = 1

An identity element with respect to . is 1,

since    1.1 = 1

         1.0 = 0.1 = 0 

3. Commutative law

          0 + 1 = 1 + 0 = 1 ( for + )

          0 . 1 = 1 . 0 = 0 ( for . )

4. Distributive law

a. . is distributive over + : x ( y + z ) = xy + xz

b. + is distributive over . : x + ( y. z) = (x + y) . (x + z)

In summary, the binary number postulates are the following:

P1: X = 0 or X = 1

P2: 0 . 0 = 0

P3: 1 + 1 = 1

P4: 0 + 0 = 0

P5: 1 . 1 = 1

P6: 1 . 0 = 0 . 1 = 0

P7: 1 + 0 = 0 + 1 = 1 

 

The table below outlines the system

 x

 y

 Z

 y+z

x.(y+z)

x.y

x.z

xy + xz

 0

 0

 0

   

    0

  0

  0

     0

 0

 0

 1

   1

    0

  0

  0

     0

 0

 1

 0

   1

    0

  0

  0

     0

 0

 1

 1

   1

    0

  0

  0

     0

 1

 0

 0

   0

    0

  0

  0

     0

 1

 0

 1

   1

    1

  0

  1

     1

 1

 1

 0

   1

    1

  1

  

     1

 1

 1

 1

   1

    1

  1

  1

     1

 

 

Once the binary arithmetic is understood we can begin to use Boolean logic to manipulate this numbering system into symbolic electric circuites, gates, adders and a myriad of other electronic creations which permit computers to conduct its operations. But before we mathematically build our computer, here are the rules.

 

Laws of Boolean Algebra

These are the basic Boolean laws. Note that every law has two expressions, (a) and (b). This is known as duality. These are obtained by changing every AND(.) to OR(+), every OR(+) to AND(.) and all 1's to 0's and vice-versa. 
It has become conventional to drop the . (AND symbol) i.e. A.B is written as AB.

 

T1 : Commutative Law

(a) A + B = B + A
(b) A B = B A

T2 : Associate Law

(a) (A + B) + C = A + (B + C) 
(b) (A B) C = A (B C)

T3 : Distributive Law

(a) A (B + C) = A B + A C
(b) A + (B C) = (A + B) (A + C)

T4 : Identity Law

(a) A + A = A 
(b) A A = A

T5 :

(a)  
(b) 

T6 : Redundance Law

(a) A + A B = A 
(b) A (A + B) = A

T7 :

(a) 0 + A = A 
(b) 0 A = 0

T8 :

(a) 1 + A = 1 
(b) 1 A = A

T9 :

(a)  
(b) 

T10 :

(a)  
(b) 

T11 : De Morgan's Theorem

(a)  
(b) 

 

Boolean functions are implemented by using electronic gates. Mathematically they are stated as follows:

For 2 variables, n = 2, the number of possible BOOLEAN function is 16.

Truth tables for the16 functions of two binary variables x& y.

 

x

Y

F0

F1

F2

F3

F4

F5

F6

F7

F8

F9

F10

F11

F12

F13

F14

F15

0

0

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

1

0

0

0

0

1

1

1

1

0

0

0

0

1

1

1

1

1

0

0

0

1

1

0

0

1

1

0

0

1

1

0

0

1

1

1

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

0

1

operator

symbol

 

.

/

 

/

 

 

+

 

 

'

 

'

 

 

 

F1 represents the truth table for AND - the operator symbol is .

F7 represents the truth table for OR  - the operator symbol is +

Boolean expressions for the 16 function of two variables:

 

Boolean function

Operator Symbol

Name

Comments

F0 = 0

 

Null

Binary constant 0

F1 = xy

x.y

AND

x and y

F2 = xy'

x / y

INHIBITION

x but not y

F3 = x

 

TRANSFER

x

F4 = x'y

y / x

INHIBITION

y but not x

F5 = y

 

TRANSFER

y

F6 = xy' + x'y

x y

EXCLUSIVE-OR

x or y but not both

F7 = x + y

x + y

OR

x or y

F8 = ( x + y )'

x y

NOR

Not - or

F9 = xy + x'y'

x y

EQUIVALANCE

x equals y

F10 = y'

y'

COMPLEMENT

Not y

F11 = x + y'

x y

IMPLICATION

If y then x

F12 = x'

x'

COMPLEMENT

Not x

F13 = x' + y

x y

IMPLICATION

If x then y

F14 = ( xy )'

x y

NAND

Not - And

F15 = 1

 

IDENTITY

Binary constant 1

Electronic gates require a power supply. Gate INPUTS are driven by voltages having two nominal values, 0V and 5V representing logic 0 and logic 1 respectively. The OUTPUT of a gate provides two nominal values of voltage only, 0V and 5V representing logic 0 and logic 1 respectively. These operations are tied to a timing circuit, the system clock.

The gate components look like this:

The table shows the implementation of Boolean algebra using resistors and diodes.

 

These components are combined in packages called chips. These chips look like this:

 

This is a single chip with imbedded components which form a circuit aka integrated circuit chips. These types of packages are calls specifically DIP (Dual Inline Package).

 

There are all kinds of circuits. They get very complicated and to date you can store millions of components on silicone wafers to form structure which look like cities on the head of a needle.

 

The MOS6502

 

In order to fully use a computer in a meaningful way you must know how it works. A detailed analysis of its design can be approached from top down, bottom up and inside out. A Top down view is concerned with how to use the computers resources, the programming model and interacting with it. A bottom up view is how the computer is designed in terms of its circuitry and components gates and an inside out view is concerned with how it works in terms of the interaction of the circuitry and its programing model.

 

The MOS6502 processor which as the heart of the Atari 2600, the Apple II and several Commodore PETS is very complex but pails in comparison to the complexity of modern day CPUs. It is an 8 bit architecture. Every memory access is a single cycle. The whole system is memory bound. Every assembly instruction has two cycles.

 

Here is some MOS6502 Code

 

Top Down

       OP                   CMD                      

 

 

.,e000 85 56                STA     $56         ;Store accumulator,regs A,X or Y

.,e002 20 0F  BC            JSR     $BC0F       ;Call instru, jump to sub routin

.,e005 A5 61                LDA     $61         ;Load accumulator

.,e007 C9 88                CMP     #$88        ;Comp A reg &

.,e009 90 03                BCC     #E00E       ;Branch if Carry clr

.,e00B 20 D4  BA            JSR     #BAD4       ;JUMP

.,e00E 20 CC  BC            JSR     #BCCC       ;JUMP

.,e011 A5 07                LDA     $07         ;Load accumulator

.,e013 18                   CLC                 ;Clear Carry Flag

.,e014 69 81                ADC     #$81        ;Add,clear carry or it is added

.,e016 F0 F3                ADC     #E00B       ;Add

 

OP codes are 8 bits in size and is always 1 byte op code which encodes both the instruction and the addressing mode. The operand is always 0,1,2 bytes. CLC doesn’t have an operand so it’s a single byte and the jmp is a 3 byte instruction which references to a 16bit memory. Memory is 16 bits, 16 bits wide 16 bit address and there are three pages of memory. Some operations can only be accomplished in the first page.

 

The programming model includes the following

 

 

 

 

The first two pages of 256 bytes each goes to 0200FF addressable space. There are 64kb of addressable space. Stack is in the first page 01FF to 0100. The first page or zero page goes to 00FF it is meant for addressing modes if the address falls in this range then you have a special encoding.

64kb of addressable space. Stack is in the first page.

 

 

 

These are all the processor instructions that exist, here are a summary of their uses:

 

Load Instructions: LDA, LDX, LDY Load from memory into accumulator x, y, and a

Store            : STA, STX, STY into memory

Transfer         : TAX, TXA, TAY, TYA, TSX, TXS

Read Modify Write: ASL, LSR, ROL, ROR

Decrement, Increment: Decrement, Increment memory

Addition, Subtraction: ADC, SBC

Logic: AND, ORA, EOR

Compare: CMP, CPX, CPY subtraction that only stores bit

BIT: AND – stores flags and not result

Set Clear flags: CLV, SEC, CLC

Branch: Branch depending on flags cleared, BMI, BPL, BVS, BVC…

Jump Unconditional: Jump subroutine, and interrupts JSR, BRK….

Stack: Only push the A register as well as the processor status register, PLA...

 

 

 

 

 

Immediate addressing has the hash sign. Load a constant in the accumulator LDA loads A. We have the constant of 17 in A.

 

 

 

 

 

Absolute addressing uses a 16 bit operand($0314). You load from $0314 if you look in memory address at $0314 you have a constant of 31 and now a 31 in A.

 

 

Zero page addressing takes a 8 bit operand. Load from address $02. Look it up in zero page, where we find 0. Therefore A = 0.

 

 

 

 

 

 

 

 

Absolute, X mean absolute plus X. So the X register gets added to the constant pointer that is encoded in the instruction stream. $0200,X if X = A in this example. Load from address 020A, which equals 52. At 0200 is an array of bytes and X is iterating over those.

 

 

 

 

The indirection or pointer is accomplished without 16 bit registers. If you have a 16 bit pointer, you can’t hold it in a register. You must store the pointers in zero page. The way it is accomplished is the pointer is stored in zero page as a pointer. Addressing mode Zero Page, X(indirect) at $80 , in zero page, we index the array with X and then we load from of these pointers.

 

 

 

 

CPU looks at 0C index that address it gets the pointer it little indian. Its loaded from that address C43F does another look up and loads the 45 into A.

 

MOS6502 Stack

 

Stack is all implicit instructions. You initialize the stack to FF, or top of stack. If you push something on the stack it stores it first where the stack pointer points and then decrements the stack pointer.

 

 

 

 

If you pull something off the stack it increments the stack pointer and then reads from that address.

 

 

Again, pull something off the stack, it increments the stack pointer and then reads from that address.

 

There are oddities with the processor or quirks or even bugs. Incrementing in memory reads and then writes. But what it does is reads and then writes back the original value. Break instructions, used for debugging if preceded by an interrupt then the break is lost. The processes opcode array contains codes which are unknown or undefined which do everything from crash the computer to nothing at all.

 

Bottom Up

 

Datasheets of a process gives the processor timing schedules in term of it onboard components. They includes, netlists, schematic and timing diagrams.

 

external image 215px-MOS6502.svg.png

Pinout of the MOS6502

 

 

Schematic of the MOS6502

Timing Circuit

 

 

 

MOS6502 GATE LEVEL SCHEMATIC

 

Die shot of th MOS6502

 

From the Inside out

 

The MOS6502 is a very efficient processor. The simulating of the instruction cycles through the chip are beyond the scope of this text but is a fascinating look at the cycling of electronic flow through the circuitry due to clock cycle pulsed instructions fed to the chip.

 

Polygon representation of the MOS6502.

 

 

The 80x86 Microprocessor

 

The 80x86 microprocessor uses the two's complement notation. In the two's complement system, the H.O. bit of a number is a sign bit. If the H.O. bit is zero, the number is positive; if the H.O. bit is one, the number is negative.

 

The ASCII character set (excluding the extended characters defined by IBM) is divided into four groups of 32 characters. The first 32 characters, ASCII codes 0 through 1Fh (31), form a special set of non-printing characters called the control characters. We call them control characters because they perform various printer/display control operations rather than displaying symbols.

 

The computer processor’s functional design looks like this:

 

 

Notice how the processors functional design is similar to the computer architectures overall design. This pattern of design is the point here.

 

In the old days the way you programmed the computer was to rewire the various functional circuits to conduct operations. The wiring schemed looked like this.

 

 

 

CPU Registers

 

CPU registers are very special memory locations constructed from flip-flops. They are not part of main memory; the CPU implements them on-chip. Various members of the 80x86 family have different register sizes. The 886, 8286, 8486, and 8686 (x86 from now on) CPUs have exactly four registers, all 16 bits wide. All arithmetic and location operations occur in the CPU registers.

Because the x86 processor has so few registers, we’ll give each register its own name and refer to it by that name rather than its address. The names for the x86 registers are

 

AX –The accumulator register

BX –The base address register

CX –The count register

DX –The data register

 

Besides the above registers, which are visible to the programmer, the x86 processors also have an instruction pointer register which contains the address of the next instruction to execute. There is also a flags register that holds the result of a comparison. The flags register remembers if one value was less than, equal to, or greater than another value. Because registers are on-chip and handled specially by the CPU, they are much faster than memory. Accessing a memory location requires one or more clock cycles. Accessing data in a register usually takes zero clock cycles. Therefore, you should try to keep variables

in the registers. Register sets are very small and most registers have special purposes which limit their use as variables, but they are still an excellent place to store temporary data. The patch panel program wiring look like this.

 

 

 

One of the primary advances in computer design that the VNA(Von Neumann architecture) is stored programming. One big problem with the patch panel programming method is that the number of program steps (machine instructions) is limited by the number of rows of sockets available on the machine. John Von Neumann and others recognized a relationship between the sockets on the patch panel and bits in memory; they figured they could store the binary equivalents of a machine program in main memory and fetch each program from memory, load it into a special decoding register that connected directly to the instruction decoding circuitry of the CPU.

 

Logically the modern computer registry circuitry is organized like this:

 

The number of different opcodes varies widely from machine to machine. However,

the same general types of operations are found on all machines. A useful and typical categorization is the following:

• Data transfer

• Arithmetic

• Logical

• Conversion

• I/O

• System control

• Transfer of control

 

 

Flag codes

 

The x86 CPUs do not complete execution of an instruction in a single clock cycle. The CPU executes several steps for each instruction. For example, the CU issues the following commands to execute the mov reg, reg/memory/constant instruction:

 

Fetch the instruction byte from memory.

Update the ip register to point at the next byte.

Decode the instruction to see what it does.

If required, fetch a 16-bit instruction operand from memory.

If required, update ip to point beyond the operand.

Compute the address of the operand, if required (i.e., bx+xxxx) .

Fetch the operand.

Store the fetched value into the destination register

 

asm file is the source code

lst file is the list of opcodes

crt file give the list of symbols and line numbers

op  opcodes, operands and

map keeps tracks of segments

 

 

 

Finally, assembly programming on registry operands looks like this. Note that mov is the same as copy.

                mov     ax, ax

                mov     ax, bx

                mov     ax, cx

                mov     ax, dx

 

In relation to the entire computer system assembly language is next to machine level on the hierarchy of human to computer interface.

 

 

Memmory location

(bytes)            Binary Instruction   Description

0000 0000 0000     0001 0000 0000 1100  Load the contents of location 12 in AC

0000 0000 0010     0011 0000 0000 0000  Move contents of AC to DR

0000 0000 0100     0001 0000 0000 1110  Load the contents of location 14 into AC

0000 0000 0110     0101 0000 0000 0000  Add DR to AC

0000 0000 1000     0010 0000 0001 0000  Store contents of AC in location 16

0000 0000 1010     0000 0000 0000 0000  Stop

0000 0000 1100     0000 0001 0101 1110  Data value 350

0000 0000 1110     0000 0000 0110 0000  Data value 96

0000 0001 0000     0000 0000 0000 0000  Data value 0

 

The C programming language is one level upward and its statements are even more human readable. Here is an example:

 

#include <stdio.h>

int main()

{

    printf( "I am alive!  Beware.\n" );

    getchar();

    return 0;

}

 

It is important to remember that the operating systems role is to control human to computer hardware interface. Operating systems have been developed commercially. Commercial solutions are proprietary, and internal details about design and implementation are not publicly available. Though they are proprietary and interfaces to hardware may be documented, the means by which the OS operates are often obscured and hacking is required to fully understand how the proprietary OS really works.

 

Another important aspect of computer architectures is how the processor interfaces with peripherals. Particularly the computer networking peripheral architecture. Every peripheral device has a chip which has designated areas to be accessed by the cpu. The devices makes requests to the cpu by processing known as interrupt calls. Network cards are designed to generate signals that correspond to a system of OSI.

 

OSI Seven Layer Model

 

As shown, the OSI reference model is built, bottom to top, in the following order: physical, data-link, network, transport, session, presentation, and application. The physical layer is classified as layer 1 and the top layer of the model, the application layer, as layer 7.

 

 

The OSI seven layer model.

 

Each layer of the OSI model has a specific function. The following sections describe the function of each layer, starting with the physical layer and working up the model.

 

Each protocol of the TCP/IP protocol suite handles certain tasks within the TCP/IP protocol stack. Here is an overview of the TCP/IP protocol stack and its protocols.

 

graphics/13fig01.gif

 

The protocols of the TCP/IP protocol

 

Standardized IP Packet Options

 

The IP packet options are appended to the end of an IP header. The length of the Option field is variable, and the end of a packet header has to be aligned to a 32-bit boundary, so an additional padding field of the appropriate length is added (and set to 0 by default). In this case, "variable" also means that the packet options can be left out, if they are not required. The Option field can take one or several packet options, where an option can be given in either of two formats:

 

One single byte describes only the option type. The length of these options is always exactly one byte.

 

The first byte includes the option type, and the second byte contains the length of this packet option. The following bytes include the actual data of that option.

 

The IP packet header.
 

graphics/14fig09.gif

 

Data packets can contain tcp/ip protical coding for html.

 

 

The website request process.

 

 

The HTTP Protocol

 

When a computer requests for a web page is sent to the server, this request contains the desired URL information and three other sections: the request/response line, the HTTP header, andthe HTTP body.

 

The content of these three sections is dependent on whether the message is an HTTP request or HTTP response. Here is the process:

 

HTML Example

 

<html>

<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

</body>

</html>

 

 

 

 

 

So, an example request line might look like:

 

GET /testpage.htm HTTP/1.1 - 

 

GET - This is a request for information residing at a particular URL. The majority of HTTP requests made on the Internet are GET requests. The information required by the request can be anything from an HTML or PHP page, to the output of a JavaScript or Perl Script program, or some other executable. You can send some limited data to the browser, in the form of an extension to the URL.

 

HEAD - This is the same as the GET method, except that it indicates a request for the HTTP header only and no data.

 

POST - This request indicates that data will be sent to the server as part of the HTTP body. This data is then transferred to a data-handling program on the web server.

 

There are a number of other methods supported by HTTP – including PUT, DELETE, TRACE, CONNECT, and OPTIONS. The RFC 2068 at http://www.rfc.net containes a complete list of specifications.

 

The HTTP Header The next bit of information sent is the HTTP header. This contains details of what document types the client will accept back from the server, like the type of browser that has requested the page, the date, and general configuration information. The HTTP request's header contains information that falls into three different categories: 

 

General: contains information about either the client or server, but not specific to one or the other.

Entity: contains information about the data being sent between the client and server Request: contains information about the client configuration and different types of acceptable documents.

 

An example HTTP header might look like this:

Accept: */*

Accept-Language: en-us

Connection: Keep-Alive

Host: www.wrox.com Referer: http://webdev.wrox.co.uk/books/SampleList.php?bookcode=3730

User-Agent: Mozilla (X11; I; Linux 2.0.32 i586)

 

The HTTP header is composed of a number of lines; each line contains the description of a piece of HTTP header information, and its value. There are many different lines that can comprise a HTTP header, and most of them are optional, so HTTP has to indicate when it has finished transmitting the header information. To do this, a blank line is used. In HTTP 1.1, a request must comprise of at least a request line and a HOST header.

 

 

 

The only difference comes when, in the act of preparing a page to be sent to the browser, the server comes across a script. The first thing the server must do is identify the machine responsible for processing the script. This is an important point because, when we write a script, we can choose whether it is to be processed by the server or by the browser. A script that is interpreted by the web server is called a server-side script. A server-side script is an instruction set that is processed by the server, and generates HTML. The resulting HTML is sent as part of the HTTP response to the browser. The browser lays out the HTML page via HTML, PHP, Javascript and/or other script based on the browser internal API Interface or Document Object Model(DOM) and displays it accordingly.

 

 

 

 

 

 

 

What is the DOM?

 

The Document Object Model (DOM) is a programming interface for HTML and XML documents. It provides a structured representation of the document and it defines a way that the structure can be accessed from programs so that they can change the document structure, style and content. The DOM provides a representation of the document as a structured group of nodes and objects that have properties and methods. Essentially, it connects web pages to scripts or programming languages. A pure HTML page is interpreted by the browser. HTML is not processed by the web server. Instead, it is sent to the browser (as part of the HTTP response) and is processed by the browser; the result is then displayed by the browser.

 

A Web page is a document. This document can be either displayed in the browser window, or as the HTML source. But it is the same document in both cases. The Document Object Model (DOM) provides another way to represent, store and manipulate that same document. The DOM is a fully object-oriented representation of the web page, and it can be modified with a scripting language such as JavaScript, PHP, and Java Sever Pages(JSP), the only diference is where this takes place. Some languages, like javascript, work at the user application level like a web browser. Others like JSP and PHP accesses the user DOM at the server level.

 

The W3C DOM standard forms the basis of the DOM implemented in most modern browsers. Many browsers offer extensions beyond the W3C standard, so care must be exercised when using them on the web where documents may be accessed by various browsers with different DOMs.

 

All of the properties, methods, and events available for manipulating and creating web pages are organized into objects (e.g., the document object that represents the document itself, the table object that implements the special HTMLTableElement DOM interface for accessing HTML tables, and so forth). This documentation provides an object-by-object reference to the DOM implemented in Gecko-based browsers.

 

API (web or XML page) = DOM + JS (scripting language)

 

The DOM was designed to be independent of any particular programming language, making the structural representation of the document available from a single, consistent API. Though we focus exclusively on JavaScript in this reference documentation, implementations of the DOM can be built for any language, as this Python example demonstrates:

 

 

In PHP the server passes the result to the result back to the DOM in the requesting browser which redenders the page.

 

Here, everything contained within the <?php and the ?> is assumed to be PHP, and is sent to the PHP script engine for processing. So, in our example, once the PHP is processed it is returned to the browser as HTML, and indeed if

you look on the browser's View Source option you should see that the program has been returned to you in pure HTML.

 

Learning is the process of changing mental landscapes. Here how it works. Imagine that the peripheral vision was obscured and a wall ten feet high, and thirty feet wide with measurement markers was placed on the ground in front of you. If you were asked to measure the wall you would find it difficult. If you were raised 60 feet in the air you would have a perspective that gave you the breadth width and scope of the wall and would also allow you to see the markers in context. You wouldn’t even need the view if you understood the context of and nature of the wall by understanding the law of walls. The law of walls may be understood without formal learning by observation and understanding of apparently unrelated observations of similarly colored, tactile, and composition of the materials of the wall. Politics would bring about an approved system of description or delusion and communicated to others about the nature of walls and so forth and thus learning and inference on the nature of things and that of wall is performed.

 

This process of changing ones minds landscape leads to broader understand and ignorance than rote learning is capable of achieving. What is the purpose of a thing? What is its nature? This change of understanding patterns or landscape shifting of the minds conception, not the agitation of perception and consumption of information for informations sake is the most effective prediction enabling and ground breaking paradigm forming imputus of learning.

It’s how one can infer existence without direct experimental evidence. This is important because some things are theoretically impossible to see directly but must be conceived to be perceived.

 

Patterns of and Cues of the Conceived Eye

 

You are alive and the cues are everywhere. What are the dimensions of the space? What are the spaces of the inhabitants? Inherent cues arise from the direct cues. They are temporal (past, present future), in respect to the supporting structures which are material (human, inert, conceiving), contextual (ambient ripples). What are the supporting materials, subliminal and social context which bind the space? What are the cues of ones role in the space and the response to change of your internal space and the landscape rippling response to the change? Trace the wiring in the ceiling grid and rediscover the effort and achievement and the signatures of the overt effort of the controlled orchestration of cues to impose upon the conceived mind. All orchestrated patterns of repetition and coding designed to prepare the conceiving mind to assume a state conducive of the perpetuation of mind.

 

 

Learning causes changes potential for behavior. Learning comes in two flavors, latent and actual and is the result of perception.

 

Illegal op codes

 

Some programming consists of illegal codes. These shortcuts can be used. Life is the same way. Not in terms of doing illegal things in terms of the law but using the whole landscape and taking advantage of shortcuts.

 

Programming in C++

 

 

C plus is a mid level language which is used to pass instruction to a computer by a process called programming. A set of commands are written or its equivalent designed into a chip and the computer runs the program. Running of a program is initiated by loading the contents of an executable code file into memory, using a loader. The loader is usually an integrated part of the operating system. These programs are translated into machine language through a varying number steps by compiling. Here are some of the steps:

 

 

 

 

Compiling C

 

• Source program processing starts by reading the entire program into a character buffer. This simplifies memory management, token isolation, file position tracking, and error reporting.

 

• Lexical analysis turns a stream of characters into a stream of tokens;

Syntax analysis turns a stream of tokens into a parse tree, or, more probably, an abstract syntax tree. Together they undo the linearization the program suffered in being written out sequentially.

 

• Often, identifiers recognized by the lexical analysis have to be identified further before being passed to the syntax analyzer. They are looked up in the symbol table. This identification can serve type identifier identification, keyword identification, macro processing, conditional compilation, and file inclusion.

 

• Macro substitution, macro parameter expansion, conditional compilation, and

file inclusion can be implemented simultaneously using a single stack of input

buffers.

 

• Code generation converts the intermediate code into symbolic machine instructions in a paradigm-independent, language-independent, and largely machine independent process. The symbolic machine instructions are then converted to some suitable low-level code: C code, assembly code, machine code.

Code generation yields a list of symbolic machine instructions steps away from an executable binary program. In most compilers, these steps are delegated to the local assembler

 

• An assembler converts from symbolic machine code to binary machine code, and

from symbolic data to binary data. In principle the conversion is one to one; The assembler then produces a binary version of it and places it in the proper position in the object file, together with the code and data segments, the relocation bit maps, and possibly further header and trailer material.

 

• The linker reads each object file. This yields one code segment, one data segment, one relocation bit map, and one external symbol table, each consisting of the concatenation of the corresponding components of the object files. In addition the linker retains information about the lengths and positions of the various components. It is now straightforward to do the relocation of the internal addresses and the linking of the external addresses; this resolves all addresses. The linker then writes the code and data segments to a file, the executable code file; optionally it can append the external symbol table and debugging information.

 

Programing in C\C++ vs Assembly Language

 

Learning what computer programming is can be quit a challenge. Here is the dilemma that every beginner programmer will face. How you look at a written computer program for the first time can cost you years of brain damage. So here is what a computer program is not.

 

There is no logic here. Looking at the syntax and grammar of a program will trick you into thinking there is a flow or pattern that makes the computer behave. No, don’t look at it that way. The reason this approach is fraught with pitfalls is because programming allows for many writing styles. There are contests for writing horrible looking unreadable code that can be compiled into meaningful programs. The key is that you are entering a succession of strings like a writing to a dos prompt that will be read by a lexar of a compiler. A linker will then create an executive file for a targeted os. The c compiler and the target os rules and you will have to create code that compiles successful and does something meaningful.

 

The software you write is more than the sum of its parts. If you have ever played Snake and then looked at its source code you can appreciate that the simple game is fun as hell and the simple game is complicated as hell to implement. It is the soul of the effort. The code when completed will create something very enjoyable if it is meaningful and if you are good the code will appear deceptively simple and even elegant. Don’t bother learning every c function or windows api or linux whatever, there are too many. Learning every math formula didn’t get Einstein to Relativity. He had a vision and used and learned new math to implement an elegant and invaluable theory that was good then and now.

 

You will not code any major software project alone. There are armies of programmers in trenches working hard as hell to produce many of the products that have inspired you, instead, look at the software endeavor as a great little puppy. Feed it, protect it and grow it and if you can afford a trainer, a groomer and some other help give the puppy (your software) the best life it can have.

 

Let’s look at c programming from the top down, bottom up and inside out. The circuitry of the computer employs various types of circuits to compute. Adders, Latches and combination circuits, etc. These circuits by attributes of the circuitry design create register memory, stack memory, alu operations, flags, execution, clocks, etc. These operations are binary, and hexadecimal and can encoded by a one to one human readable mnemonic system like assembly language and CPU op codes. The mnemonics organize the computer resources by there functions. The primary functions are movs(copy), push(save a value on memory type stack), pops(read a value off stack), labels, db(data), tests, calls, jumps, shifts, logic, arithmetic, calls, returns, special os and bios system codes and a few hundred more operations. This is the domain in which all higher level language convention exists.

 

Intel x86 Assembly Language Keywords

 

add   and   call  cld   cli   cmp   cmpb  db

dd    dec   decb  dw    equ   global      in    inb

inc   incb  ins   int   iret  ja    jae   jb

jbe   jg    jge   jl    jle   jmp   jnz   jz

lea   lgdt  lidt  lldt  loop  ltr   mov   movs

movsb movzx neg   nop   o16   or    out   outb

outs  pop   popad popf  push  pushad      pushf rep

ret   rol   ror   section     sgdt  shl   shr   std

sti   stos  sub   test  times xchg  xor

 

To code in assembly code, you must, shift(add,divide, etc), mov(copy) operands into memory locations, test the results with flags, call hard wired functions, lable operations, ret(return) and exit the program.

 

C operators

 

The standard C language provides the following operators and punctuators:

 

{ } [ ] ( ) (type) . -> ++ -- & *  +  -  ~

! sizeof / %  << >> < > <= >= == != ^ &&

|| ? : = *= / = %= += -= <<= >>= &= ^= |=

, # ## ; : " "

 

 

ANSI C (C89)/ISO C (C90) keywords:

 

auto      double  int   struct

break     else                long  switch

case      enum    register    typedef

char      extern  return      union

const      float  short unsigned

continue   for                signed      void 

default         goto                sizeof      volatile

do        if                  static      while

 

The standard header files that comes with c are.

 

SO/IEC 9899:1990 (C89, C90) - ISO/IEC 9899:2011

<assert.h>  <limits.h>    <signal.h>      <stdlib.h>

<ctype.h>   <locale.h>    <stdarg.h>      <string.h>

<errno.h>   <math.h>      <stddef.h>      <time.h>

<float.h>   <setjmp.h>    <stdio.h>       <tgmath.h>

<iso646.h>  <wchar.h>     <wctype.h>      <uchar.h>

<complex.h> <inttypes.h>  <stdint.h>      <threads.h>

<fenv.h>    <stdbool.h>   <stdnoreturn.h> <stdatomic.h>

<stdalign.h>  

 

 

The c programming language is an attempt at hardware independence as assembly language is hardware dependent and must be written to a specific hardware and os. Some books say that the language is more readable and this is true. The problem is that readability gives the user the illusion of literality. The coding is still based on the machines one to one architecture and the compiler interprets your programs into machine code which is hard for humans to manipulate. This is important to understand because debugging sometimes arises from the compiler misinterpreting your program procedures.

 

In c you code in statement format. The accounting for memory and testing is hidden behind math symbols and c grammar. Its still there it’s just translated by the compiler. If you look at c code you can see assembly language operations peaking under the surface with a little imagination.

 

C Plus is a different language. It is written in sentence format just like c but the grammar is a bit different and some enhancements to code management have been added. These “enhancements” are referred to as object orientated programming.

 

 

 

 

C++ Keywords

 

Asm         auto         bool       break        case

catch       char         class      const_cast  continue

default     delete      do         double      else

enum        dynamic_cast extern     false        float

for         union        unsigned   using        friend

goto        if           inline     int          long

mutable     virtual     namespace  new          operator

private     protected   public     register    void

reinterpret_cast         return     short signed sizeof

static      static_cast volatile   struct      switch

template    this         throw      true         try

typedef     typeid      unsigned   wchar_t     while

 

 

ISO/IEC 14882:2011 (C++2011)

 

The 52 C++ headers are:

 

<algorithm>           <fstream>           <list>     <regex>         <typeindex>

<array>               <functional>        <locale>   <set>           <typeinfo>

<atomic>              <future>            <map>      <sstream>     <type_traits>

<bitset>              <initializer_list>  <memory>   <stack>     <unordered_map>

<chrono>              <iomanip>           <mutex>    <stdexcept> <unordered_set>

<codecvt>             <ios>               <new>      <streambuf>       <utility>

<complex>             <iosfwd>            <numeric>  <string>         <valarray>

<condition_variable>  <iostream>          <ostream>  <strstream>        <vector>

<deque>               <istream>           <queue>    <system_error>

<exception>           <iterator>          <random>   <thread>

<forward_list>        <limits>            <ratio>    <tuple>  

 

The 26 headers related to C (C2011) are:

 

<cassert>   <cinttypes>  <csignal>    <cstdio>   <cwchar>

<ccomplex>  <ciso646>    <cstdalign>  <cstdlib>  <cwctype>

<cctype>    <climits>    <cstdarg>    <cstring>

<cerrno>    <clocale>    <cstdbool>   <ctgmath>

<cfenv>     <cmath>      <cstddef>    <ctime>

<cfloat>    <csetjmp>    <cstdint>    <cuchar>

 

C++ OPERATORS

 

Level Precedence group  Operator    Description Grouping

1     Scope             ::    scope qualifier     Left-to-right

2     Postfix (unary)   ++ -- postfix increment / decrement Left-to-right

                        ()    functional forms

                        []    Subscript

                        . ->  member access

3     Prefix (unary)   ++ -- prefix increment / decrement  Right-to-left

                        ~ !   bitwise NOT / logical NOT

                        + -   unary prefix

                        & *   reference / dereference

                        new delete  allocation / deallocation

                        sizeof      parameter pack

                       (type) C-style type-casting

4     Pointer-to-member . * ->*     access pointer    Left-to-right

5     Arithmetic: scaling * / %     multiply, divide, modulo      Left-to-right

6     Arithmetic: addition+ - addition, subtraction   Left-to-right

7     Bitwise shift       << >>     shift left, shift right Left-to-right

8     Relational          < > <= >= comparison operators    Left-to-right

9     Equality           == !=      equality / inequality   Left-to-right

10    And               &     bitwise AND Left-to-right

11    Exclusive or      ^     bitwise XOR Left-to-right

12    Inclusive or      |     bitwise OR  Left-to-right

13    Conjunction       &&    logical AND Left-to-right

14    Disjunction       ||    logical OR  Left-to-right

15    Assignment-level expressions  = *= /= %= += -=

         >>= <<= &= ^= |=     assignment / compound assignment    Right-to-left

                       ?:     conditional operator

16    Sequencing        ,     comma separator   Left-to-right

 

 

 

The c language has a grammar right? So how do you read it.

Coding in c has rules that the compiler enforces. Rules can be manipulated when they are understood.

 

 

 

MemoryAddressContent.png

 

Pointers and referrrences are aggravating as shit.

 

 

int number = 88;     // An int variable with a value

int * pNumber;       // Declare a pointer variable called pNumber pointing to an int (or int pointer)

pNumber = &number;   // Assign the address of the variable number to pointer pNumber

 

int * pAnother = &number; // Declare another int pointer and init to address of the variable number

 

PointerDeclaration.png

A reference works as a pointer. A reference is declared as an alias of a variable. It stores the address of the variable, as illustrated:

 

ReferenceIsAPointer.png

Here is another illustration of a reference variable.

 

C C++ pointer, reference, dereference, address of: something to remember

Here is some C code.

 

int number = 88;

int * pNumber = &number;  // Declare and assign the address of variable number to pointer pNumber (0x22ccec)

cout << pNumber<< endl;   // Print the content of the pointer variable, which contain an address (0x22ccec)

cout << *pNumber << endl; // Print the value "pointed to" by the pointer, which is an int (88)

*pNumber = 99;            // Assign a value to where the pointer is pointed to, NOT to the pointer variable

cout << *pNumber << endl; // Print the new value "pointed to" by the pointer (99)

cout << number << endl;   // The value of variable number changes as well (99)

 

 

*ptr    -   a pointer variable

var     -    a normal variable

// declare a pointer variable ptr of type int

int *ptr;

// declare and initialize normal variable var of type int

int var = 123;

// assign the address of normal variable var to pointer ptr.

ptr = &var;

 

*   - is a pointer to  

[ ] - is an array of

( ) - is a function returning

&   - is an address of

 

int   *x         x is a pointer to int data type.

int   *x[10]     x is an array[10] of pointer to int data type.

int   *(x[10])   x is an array[10] of pointer to int data type.

int   **x     x is a pointer to a pointer to an int data type – double pointers.

int   (*x)[10]   x is a pointer to an array[10] of int data type.

int   *funct()   funct is a function returning an integer pointer.

int   (*funct)() funct is a pointer to a function returning int data type – ………………………………………..quite familiar constructs.

int   (*(*funct())[10])() funct is a function returning pointer to an array[10]   ………………………………………..of pointers to functions returning int.

int   (*(*x[4])())[5]   x is an array[4] of pointers to functions returning pointers to array[5] of int.

 

 

 

Programming with a flow chart like truth table or circuitry diagram is helpful when programming software.

 

The soul of the program – what is the psychology effect to convey. Putting the atoms together to make meaning. Math required to convey human experience meaningful experience. Here are the steps to programming.

 

  1. Start with the idea.
  2. I want to print a message.
  3. Research the built in function that achieve this and if not build your own. In C print() function is used to display messages. In order to use the built in function you have to include it. #include <stdio.h>.

 

Here is the skeleton C

 

#include <stdio.h>

 

int main()

{

}   

Here is how you use the included C print function.

 

#include <stdio.h>       // include statement imports makes these pre packaged   ……………………………………………………………………..functions available. Otherwise you would have to ……………………………………………………………………..write your own c/assembler function to handle ……………………………………………………………………..console output. NO!

int main()               //Every program has main.

{                        //braces are for C grammar, compiler doesn’t need

    printf("This is output from my first program!\n"); // print, YES!! Use it

    return 0;            //Every C program returns control to OS.

}                        //..but humans need and compiler will error if not here

 

Idea 2

 

Lets add two integers. I want to print two added integers. Research the built in function that achieve this and if not build your own. In C print() function is used to display messages. Strategy is to store values into memory variable and instruct and add of those variables and then print the result.

 

Prototype:

 

#include <stdio.h>

 

int main()

{

int x;

int y;

int z;

z = x + y;

 

    printf("%d\n", z);

    return 0;

}

Answer was a memory address but it worked! Why?

Ok prototype compiled, lets add some values or initialize the variables.

 

#include <stdio.h>

 

int main()

{

int x = 1;

int y = 2;

int z;

z = x + y;

 

    printf("%d\n", z);

    return 0;

}

Ok answer was 3. It worked!

 

Lets permit the program to prompt for a value. Scanf() function will works.

 

#include <stdio.h>

 

int main()

{

int x = 1;

int y = 2;

int z;

int t;

scanf("%d", &t);     // Here is the function

z = x + y + t;

 

    printf("%d\n", z);

    return 0;

}

Entered a 3 got a 9.

 

Ok lets test a value. Lets use the while(){};.

 

#include <stdio.h>

 

int main()

{

int x = 1;

int y = 2;

int z;

int t;

scanf("%d", &t);

if(t != -1){

z = x + y + t;

printf("%d\n", z);

};

return 0;

}

 

If you don’t enter –1 the program will execute. It works. Now let’s add a function to call to add for us.

 

#include <stdio.h>

int addnum(int, int, int);

int main()

{

int x = 1;

int y = 2;

int z;

int t;

scanf("%d", &t);

if(t != -1){

z = addnum(x , y , t);

printf("%d\n", z);

};

return 0;

}

int addnum(int e, int f, int g) {

return e + f + g;

}

 

Ok it worked. Lets store the values in an array.

 

#include <stdio.h>

int addnum(int w[], int arrayreferences);

int main()

{

 

int x = 1;

int y = 2;

int z;

int t;

int a[2] = {x, y, t};

scanf("%d", &t);

if(t != -1){

z = addnum(a, 2);

 

printf("%d\n", z);

};

return 0;

}

int addnum(int v[], int arrayreferences) {

int i, sum=0;

for (i=0; i<arrayreferences; i++){

    sum = sum + v[i];

}

return(sum);

}

 

Ok lets use a pointer to a memory location that stores a value.

#include <stdio.h>

int addnum(int w[], int arrayreferences);

int main()

{

 

int x = 1;

int y = 2;

int z;

int t;

int a[2] = {x, y, t};

scanf("%d", &t);

if(t != -1){

z = addnum(a, 2);

 

int *zPtr;

zPtr = &z;

 

printf("%d\n", *zPtr);

};

return 0;

}

int addnum(int v[], int arrayreferences) {

int i, sum=0;

for (i=0; i<arrayreferences; i++){

    sum = sum + v[i];

}

return(sum);

}

 

It worked. Lets return pointers from a function

 

#include <stdio.h>

int addnum(int *w[], int arrayreferences);

int main()

{

 

int x = 3;

int y = 2;

int z;

int t;

int a[2] = {x, y, t};

scanf("%d", &t);

if(t != -1){

z = addnum(a, 2);

 

int *zPtr;

zPtr = &z;

 

printf("%d\n", *zPtr);

};

return 0;

}

int addnum(int *v[], int arrayreferences) {

int i, sum=0;

for (i=0; i<arrayreferences; i++){

    sum = sum + v[i];

    int *sumPtr;

    sumPtr = &sum;

}

return(sum);

}

 

 

Ok we returned a pointer to the final value from the function. Lets work with chars.

 

#include <stdio.h>

#include <stdlib.h>

main(){

      int i;

      char *cp;

 

      cp = "a string";

      while(*cp != 0){

              putchar(*cp);

              cp++;

      }

      putchar('\n');

 

      for(i = 0; i < 8; i++)

              putchar("a string"[i]);

      putchar('\n');

      return(0);

}

 

Ok it worked. Lets do this with a struct.

 

#include <stdio.h>

 

struct teststruct {

      char *cp;

      };

 

main(){

    struct teststruct a;

    struct teststruct *aPtr;

 

      a.cp = "a string";

      aPtr = &a;

      while(*a.cp != 0){

              putchar(*a.cp);

              *a.cp++;

      }

      putchar('\n');

 

     

      return(0);

}

 

Computers only 0’s and 1’s. Storage of memory variables are temporary if stored in ram. In ordinary to retrieve it for later use it must be stored on a secondary disk. Data items are hierarchy. Lets make a file.

 

#include <stdio.h>

 

int main() {

    int account;

    char name[30];

    double balance;

    FILE *cfPtr;

 

    if (( cfPtr = fopen("client.dat", "w")) == NULL)

        printf("file could not be opened");

    else {

            printf("Enter the account, name, and balance.\n");

    printf("Enter EOF to end input\n");

    printf("? ");

    scanf("%d%s%lf", &account, name, &balance);

    while(!feof(stdin)){

        fprintf(cfPtr, "%d %s %.2f\n", account, name, &balance );

        printf("? ");

        scanf("%d%s%lf", &account, name, &balance);

    }

    fclose(cfPtr);

    }

     return 0;

    }

 

Data structure

#include <stdio.h>

#include <stdlib.h>

 

struct listNode {

char data;

struct listNode *nextPtr;

};

 

typedef struct listNode ListNode;

typedef ListNode *ListNodePtr;

 

void insert(ListNodePtr *, char);

char delete(ListNode *, char);

int isEmpty(ListNodePtr);

void printList(ListNodePtr);

void instruction(void);

 

main() {

 

ListNodePtr startPtr = NULL;

int choice;

char item;

 

instrucions();

printf("? ");

scanf("%d", &choice);

while (choice !=3 ) {

    switch(choice != 3){

case 1 :

    printf("Enter a character: ");

    scanf("\n%c", &item);

    insert(&startPtr);

    break;

case 2:

    if (!isEmpty(startPtr)) {

        printf("Enter character to be deleted: ");

        scanf("\n%c", &item);

        if (delete(&startPtr, item)) {

            printf("%c delete.\n", item);

            printList(startPtr);

        }

        else

            printf("%c not found.\n\n", item);

        }

        else

            printf("List is empty.\n\n");

        break;

default:

    printf("Invalid choice.\n\n");

    instructions();

    break;

    }

    printf("? ");

    scanf("%d", &choice);

}

printf("Enter of run.\n");

return 0;

}

 

void instructions(void) {

printf("Enter your choice:\n"

"  1 to insert an element into the list.\n "

"  2 to delete an element from the list.\n"

"  3 to end.\n");

}

 

void insert(ListNodePtr *sPtr, char value) {

ListNodePtr newPtr, previousPtr, currentPtr;

newPtr = malloc(sizeof(ListNode));

if (newPtr != NULL) {

    newPtr->data = value;

    newPtr->nextPtr = NULL;

    previousPtr = NULL;

    currentPtr = *sPtr;

   

    while (currentPtr != NULL && value > currentPtr->data){

        previousPtr = currentPtr;

        currentPtr = currentPtr->nextPtr;

    }

    if (previousPtr == NULL){

        newPtr->nextPtr = *sPtr;

        *sPtr = newPtr;

    }

    else {

        previousPtr->nextPtr = newPtr;

        newPtr->nextPtr = currentPtr;

         }

          

    }

   

    else

        printf("%c not inserted. No memory available.\n", value);

}

 

char delete(ListNodePtr *sPtr, char value){

ListNodePtr previousPtr, currentPtr, tempPtr;

if(value == (*sPtr)->data){

tempPtr = *sPtr;

*sPtr = (*sPtr)-> nextPtr;

free(tempPtr);

return value;

}

else

    {

        previousPtr = *sPtr

    }

}

 

}

}

};

 

 

Comments are talking to the human. Print statements are giving cues to the human for human interaction. The game or program is cuing the human for interaction. Just keep witting. Name the values in an illustrative way to speak to your audience. Talk to those following audience and connect. Talk don’t fight. You are swimming in a digital ocean, give your self beacons to get back and know the nature of the ocean. Currents, sun light, stars, seagulls, westerly’s. Know the boat and know water and know the captain and crew and set sail for a foreign land. There will be perils and victories but when you control you, you will reach shore.

 

C plus is not C. It looks like this.

 

#include <iostream>

 

using namespace std;

 

int main()

{

    cout << "Hello world!" << endl;

    return 0;

 

c

C plus is deceptively similar to c. The grammar is different and the coding style is object oriented and not procedure coded like c and assembly language, Here lets create a function.

 

#include <iostream>

 

using namespace std;

 

int firstfunc (int x, int y);

int main()

{

    int x = 2;

    int y = 2;

    cout << "Hello world!\n" << firstfunc(x, y) << endl;

    return 0;

}

int firstfunc (int z, int y) {

int x;

x = z * y;

return x;

}

 

Lets see a reference. Classes example. Classes put data and variables together and functions that manipulate those data member.

 

#include <iostream>

using namespace std;

 

class Rectangle {

  private:

    int width, height;

  public:

    void set_values (int,int);

    int area() {return width*height;}

};

 

void Rectangle::set_values (int x, int y) {

  width = x;

  height = y;

}

 

int main () {

  Rectangle rect;

  rect.set_values (3,4);

  cout << "area: " << rect.area();

  return 0;

}

 

Ok lets dumb it down so that we can see this complicated shit work.

 

// classes example

#include <iostream>

using namespace std;

 

class Rectangle {

  private:

    int width;

  public:

    void set_values (int);

    int area() {return width;}

};

 

void Rectangle::set_values (int x) {

  width = x;

  }

 

int main () {

  Rectangle rect;

  rect.set_values (3);

  cout << "area: " << rect.area();

  return 0;

}

 

Lets point to object.

 

// classes example

#include <iostream>

using namespace std;

 

class Rectangle {

  //private:

   // int width;

  public:

    int width;

    void set_values (int);

    int area() {return width;}

    void print() {cout << width << endl;}

};

void Rectangle::set_values (int x) {

  width = x;

  }

 

int main () {

  Rectangle rect, *ptrRect = &rect, &refRect = rect;

  rect.set_values (3);

  rect.print();

  rect.width = 7;

  cout << "area: " << rect.area();

  ptrRect->width = 10;

  cout << "area: " << rect.area();

  refRect.width = 11;

  cout << "area: " << rect.area();

  return 0;

}

 

expression  can be read as

*x    pointed to by x

&x    address of x

x.y   member y of object x

x->y  member y of object pointed to by x

(*x).y      member y of object pointed to by x (equivalent to the previous one)

x[0]  first object pointed to by x

x[1]  second object pointed to by x

x[n]  (n+1)th object pointed to by x

 

 

The use of classes

 

#include <iostream>

 

using namespace std;

 

class Time {

public:

    Time();

    void setTime(int, int, int);

    void printMilitary();

    void printStandard();

private:

    int hour;

    int minute;

    int second;

};

 

    Time::Time(){hour = minute = second = 0;}

    void Time::setTime(int h, int m, int s){

    hour = (h >= 0 && h < 24 ) ? h : 0;

    minute = (m >= 0 && m < 60) ? m : 0;

    second = (s >= 0 && s < 60) ? s : 0;

    }

 

    void Time::printMilitary(){

    cout << (hour < 10 ? "0" : "") << ":"

    << (minute < 10 ? "0" : "" ) << minute;

    }

 

    void Time::printStandard(){

    cout << ((hour == 0 || hour == 12) ? 12 : hour % 12)

    << ":" << (minute < 10 ? "0" : "") << minute

    << ":" << (second < 10 ? "0" : "") << second

    << (hour < 12 ? "AM" : "PM");

    }

int main() {

Time t;

cout << "The initial military time is ";

t.printMilitary();

t.printStandard();

return 0; }

 

 

Programming OS Specific

 

 

 

 

 

 

Operating system

 

Systems are defined as definable separate parts working together as part of a whole. The operating system is the main board of all the soft subsystems that run to maintain the integrity, usability, and conveyance of the computer as a tool. It presents the computer hardware resources as a monolithic object with hooks, interfaces and services for client applications or programs. Process, file, memory, and device are the main control feature of the operating system or OS. The CPU, memory and device hardware are abstracted by the OS into logical interfaces for client host programs. The cpu cycles continuously and these cycles are fed by os governed inputs of process data. Files are the logical chunks at which data is fed into process. Memory circuity is the cycle pathway. Devices are other channels and rivers of cycle pathways.

 

 

The Forth State of Matter

 

Have you experienced a balloon unpop, or light not shined or two objects occur in the same place at the same time. You have if you are a mathematician or a physicist. These occurrences are predicted by the language of mathematic and the express experimentation based on that maths in laboratory experiments. No balloons don’t unpop but antiparticles are their positives moving backward in time mathematically speaking and light won’t shine at the most sever space time curvature of a dark star and lastly forces are boson particles which are perfectly happy being anywhere in space time and locality. This is the stuff of reality and there is a little-known analogy between electromagnetism and gravity which is derived from the fact that they're both vector field functions. James Clerk Maxwell was the first to derive equations for the divergence and curl of the vector field these equations became famously known as Maxwell's equations which are the foundation of conventional electromagnetic theory of the Delta operator which is designated as an upside down triangle is called a gradient which basically describes the direction of greatest change in the vector field and the diversions tells us the amount by which changes when we move in this direction. The divergence which is designated by a gradient dot product operator with the delta triangle with a period next to it. The curl is designated by a cross product which is the X the Delta operator followed by an X. Electromagnetism breaks consists of the electric field and magnetic field components.

 

Einstein’s Gravity

 

There are four different flavors of gravity. Einstein’s is expressed in our science as a balance of space, time with respect to mass and energy. It is observed as the curvature which creates the cosmic tree like structure in our known universe. This gravity bends space. Gravity also distorts time. Mass disturbs the gravitational field like a fabric and warps time and light. The two other forces in the gravity family like forces, are best described as distortions we have measured as dark matter/dark energy(a mis nomer) and completely simplistic description as the two are actually one boson like particle which spans in influence on more than one dimension which we interpret as missing mass and as we are not outfitted with uniforms to travel too nor apparatus to experiment on currently, and must describe it currently as two different phenomena in our computer simulation of the Universe. The last flavor of gravidity is mediated by what we have described theoretically as a graviton bosonic particle. The last gravity bosonic particle has two different properties observed in nature. Gravity as a field can be described as having gravi-electric and gravi-magnetic components. The fields are analogous in that just as magnetism is a relativistic induced forced caused by the movement of electric charge to charge Q and moving through space at this density and it will produce a magnetic field which curls around the loop of wire and a corkscrew the direction of the magnetic field is determined by using the right-hand rule.

 

The righ-hand rule describes in which direction electricity or magnetic flux will flow. If you run current through a wire the motion of the electrons passing through the wire will produce a magnetic field around the wire. If you take your right hand and point your thumb in the direction of the current and are electrons move in the direction of your thumb. They produce a magnetic field in the direction in which your fingers curl. A coil of wire, tracing the movement of the electrons passing through it and using the right-hand rule, the magnetic field all add up to a product which is a single large magnetic field. The presence of charge creates an electric field and the presence of mass produces a gravity field which its force carrier we describe as the gravitino or the forth gravity. The motion of an electric charge through space produces a magnetic field and the motion of a mass gravi-magnetic field.

 

Magnetic Propulsion vs Anti-Gravity Propulsion

 

Strong magnetic fields can levitate objects but the fields must oscillate back and forth to achieve this.  These unidirectional fields produce rotation which needs to be stabilized to produce lift.  A superconductors can levitate objects in a constant magnetic field due to the Meissonier effect, which is a result of diamagnetism. Which is a form of magnetism that is only exhibited by a substance in the presence of an externally applied magnetic field. Super conductors and super fluids are both examples of those Einstein condensate switches, or the fifth state of matter. A superconductor conducts electricity with zero resistance quality superfluid flows through a container with zero resistance friction is totally illuminated a superfluid will pour straight through ceramic container because of the spores. It will also flow through the tiniest hole instantly because all the atoms in the superfluid reduced to a single wave function obeys those Einstein Bose Einstein's statistics rather than Ferminonic statistics. The Pauli exclusion principle states that no two atoms or fermions are matter particles can occupy the same space at the same time the atoms in a Bose Einstein condensate become bosons or force particles which do not obey the Pauli exclusion principle and can, when contained, all fit through the tiniest perforation of a container at the same time if there was an opening wide enough to let one through they could all fit through at the same time.

 

In the first quarter of the 19th century a remarkable discovery was made which changed forever modern engineering. Governments had acquired an energy reactor technology used for propulsion which operated on a field which was not completely electromagnetic nor energetic like thrust created by combustion. Reverse engineering revealed that a distortion in the first gravity could be created by a gravity distortion generator which induced a perpetual gradient in a right handedness relative to the system. The propulsion system used electromagnetic forces induced by the gravi-electric/magnetic reactor but used gravitational propulsion as its primary thrust. The engineering principles have been reverse engineered using fifth state materials. As the original system used materials of which are unobtainable at this point in human history.

 

Gravity, mass and light are interrelated. Light bends when under the influence of gravity. Stars are visible  behind the Sun that are blocked from view by the some reason we can see them is because the sun is a tremendous gravitational field and it's bending the light around it to the extent that we can see the stars behind it. Space-time and gravity are all essentially interrelated they all act on one another. Gravity bends space and gravity also distorts time. When one is altered you essentially alter the other two. If for example, one were to have a massive body, it generates gravity producing a lot of gravitational waves that he will the distorts space and will the distorts space and space too.

 

Traveling at the speed of light, without warping space, is not possible theoretically speaking. At the speed of light there are several navigational problems. The fact that as your speed increases so does your mass proportionally. The more energy you put into going faster begins to slow you down because your velocity energy is converted into mass. Also, traveling at extreme velocity are fraught with navigational problems related to collision with little tiny micrometeorites. At speeds like this it would undoubtedly destroy your ship. Aside from these facts, the amount of energy required to accelerate to the speed of light is proportional to the total mass of the system in this case, the Universe.

 

The system used an isotope of a rare laboratory element called Element X at the top of the reactor. The base of the reactor is a small particle accelerator. A particle is accelerated the high-speed and then deflected up a small tube and it's aimed at element X. This transmutes the element which causes it a radiation emissions previously never discovered. It produces an anti-matter particle, which is guided down a tube and reacts with a plasma gas. When matter and antimatter reactivate convert to 100% efficient energy. Which was a violation of the first law of thermodynamics? The only byproduct was electrical power in the emitted by the reactor which powered other subsystems. The sub systems had no apparent wiring or power. Later, it was discovered that the systems housing was replete with nanotubuals at the molecular scale. So there was no need for external navigational power as it is supplied as a byproduct of the reactive reactor, which primary function was to produce a gravitational bow wave. This bombarded of element X produced a gravitational wave which was present at the top of the reactor and projected. Relativistic speed rotation was the source of the gravitational distortion. Could scientist reverse engineer these properties on earth? We did.

 

Rotating superconductors produced gravi-magnetic fields larger than predicted by modern quantum mechanics. This phenomenon is described by paper written by Russian researcher Eugene Podkletnov. Similar studies proved by Vienna Austria by Martin Hofmann in a paper titled gravi-magnetic field of a rotating superconductor. Also, in American physicist Ning Li and Douglas Torr of the University of Alabama have described these fields created by super fluids independent of the government.

 

In order to achieve gravitomagnetic propulsion, mercury doped ionized phased plasma gas, which is super cooled 150° Kelvin and pressurized to 200,000 atmospheres and rotated 60k revolutions per minute. It is a superfluid and a Ferro fluid. At this point the fluid becomes a Bose Einstein condensate fluid rotating around a container with zero friction which never slows down. It is propelled electromagnetically to relativistic speeds. These speeds ionize the gas generating a gravi-magnetic radiation field perpendicular to the ion spin axis. Back engineering the original system proved problematic as there were problems with rotating a superfluid because there is no friction rotating the container. Superfluids by themselves do nothing in a container because fluids move relative to a container because of adhesion to the sides of the container. There is no friction force with a superfluid. Stirring a superfluid achieves no affect as it only makes the atoms rotate on their individual accesses and doesn't make the fluid rotated as a whole. The breakthrough came by introducing a Ferro magnetic fluid which will move in the presence of a magnetic field thus allowing it to rotate the fluid using electromagnets. The result is the superfluid antigravity centrifuge which has no limit to how fast the fluid can spin other than the centripetal force that holds the container together. In order to create lift with the new system, the craft must have smooth rounded edges to accommodate the rotating superfluid around the enclosure of the vehicle, like a saucer plate.

 

 

The Other Teachers

 

What Is Higher Learning – What up Cube!

 

What is a point? Some education professionals opt out of the definition immediately by saying, a point cannot be defined. The word point lines and planes are left undefined in order to avoid circularity. If you say a point is like a dot at the end of a sentence and is infinitely small. The last statement is the beginning of the brainwashing of higher learning. Not because the name was changed from point to dot, but now its purpose was subtly converted from a concept into a physical reality or a marker location. This double talk puts the listener into a highly suggestive state psychologically, by turning off cognitive reasoning. It is to say, the fish is on the hook because, and if you say that each point in a plan is now a location on the Cartesian plan and now an ordered pair in a Cartesian plane. You have confounded the meaning to be a mathematic description. If you explain a dot as a location and construe it as a space time event and as a figure, like saying the point of impact. Education professionals are trained to teach a curriculum that thwarts common sense by blending several conflicting concepts and definitions. If a dot can be a dot location an ordered pair and an event. Then what is to be said of a dot? The truth is, a point is a dot. A geometric figure with the single property of shape.  It can be utilized scientifically because it is a constant form representation cue to the user of a singularity. A location is an abstract concept. A location does not have a shape. An ordered pair is a set of instructions to find a dot and an event is the collision of two dots. The use of the word point as a dot as a location and as an object and as a concept conflates their respective purposes.

 

The main purposes of higher learning, is to support the democratic class system. Democracy is a class system with a buy in clause. Education, social rank, popular behavior, racial and cultural classification, social status and most importantly wealth are points toward the citizen being presented the full suite of freedoms that a social governance system has to offer.

 

 

….UNTIL LATER. WHO ARE THE OTHER TEACHERS