Use the 3-D Process To Keep Your Trading on Track

Best Binary Options Brokers 2020:
  • Binarium

    The Best Binary Options Broker 2020!
    Perfect For Beginners!
    Free Demo Account!
    Free Trading Education!

  • Binomo

    Good choice for experienced traders!

Trading Journal: How to Track Your Trades to Optimize Your Performance

Trading Journal – Introduction

We don’t know of a single successful trader that doesn’t keep a trading journal.

There is a reason why successful businesses keep detailed records! They use the data to analyze and optimize their operations!

Trading is no different. The most important thing that you can do to cut your learning curve is to treat it like a business and keep a detailed trading journal.

Many struggling traders don’t keep journals, let alone know what they are!

Why might this be the case?

Put it this way.

Digging into your emotions pre, during and after trades will unlock incredible insight into your strengths and weaknesses.

This will help you optimize your strategy and identify areas to work on for improvement. That is how successful traders operate!

Many losing traders jump between strategies looking for the holy grail. We believe that a trading journal IS the holy grail!

In this post, we’ll break down the process of keeping a trading journal so that you can unlock your true trading potential!

Trading Journal – What to Track?

By tracking it you can master it. Remember that!

Most traders stick to the basic metrics when creating trading journals.

These can include entry, exits, position size, as well as net profit & loss.

While this is a good start, we want to go deeper than just the P/L from your broker statement.

We also want to track the factors that can affect trading performance such as emotions, market sentiment & analysis, as well as trade qualifiers/disqualifiers.

What Do We Track?

Since we are day traders, we keep a trading journal for every single session, whether we traded or not. Swing traders will benefit from tracking each trade, before, during and after execution.

The relevant metrics that we like to use for our trading journal are as follow:

(2) Position size used

(3) Whether we went long or short & why

(4) Strategy used to execute trade

(5) Time and date of trade

(8) Final P/L Result

(8) Screenshots of the trades

(9) Notes with regards to why we took/disqualified the trades

(10) Session and/or Trade Grading

Trading Journal – How to review and optimize your edge

If you keep disciplined and consistently update your trading journal, then you should have a nice set of data to review. Here is what to look for in order to optimize your edge and improve your trading results!

  1. Identify patterns that may be leading to losers and find ways to minimize/mitigate them.
  2. Identify patterns that lead to your winners and find ways to maximize your profits.

Let me explain…

Losing trades are part and parcel of this business, however, not every loss is the same! For each loss that you take, you want to make sure that it was a valid setup in the first place.

Ask yourself, “How can I minimize my losses”? If you find that you tend to perform the worst on a certain date of the week, you might consider not trading it moving forward. What if you find that you are getting the direction right, but getting stopped out of trades before the real move happens far too often? Perhaps you are getting in too early and can add a filter to reduce your losses.

Your winning trades are just as important for your development as the losers. Sometimes we get rewarded for breaking our rules, so you’ll want to review each winning trade to ensure it was a valid setup in the first place. If the profit was a result of a mistake or rule-breaking, make a note of it. You’ll want to look for patterns that lead to your winning trades. Is there a certain setup you should focus on? Are there days you seem to perform best? Are there times of day that you trade the best during? These are all things that should be noted and review on a continuous basis.

After reviewing your winners, ask yourself “how can I maximize my profits on my winners?”. Whether it’s scaling out of a portion of the position to lock in profit and letting the rest run or utilizing a more effective way of manually trailing your stops, this should be a big focus during your review.

If you can do these things successfully, you will be well on your way to becoming the best trader that you can be! Is it starting to make sense why a trading journal is so crucial to your development?

Trading Journal – Free Tools


With a free and paid version, this is our preferred tool for keeping our trading journal. The free version allows a monthly upload limit of 60 MB and should suffice for most new traders. You can take screenshots directly into the notes, annotate images, create notebooks and tag notes making it easy to keep a detailed journal.

Google Docs

Another free tool that can be accessed with a Gmail email address. A great alternative to Evernote which can be used to write down thoughts and analysis of the markets.

Windows Snipping Tool/Mac Screenshot Tool

If your trading platform does not offer the option to copy charts directly from the platform, then this is a great option to get screenshots of your charts into your trading journal.

Microsoft Paint

Another free image editing tool out of Microsoft which you can use to edit and annotate your charts as needed.

Trading Journal – The Full Process

By now you should understand the importance of keeping a trading journal, as well as, the metrics to track and how to review and optimize your performance going forward.

If there is still any confusion, have no fear! We made this video to walk you through the complete process of creating a trading journal which puts together all of the concepts introduced above.

Grab a coffee or a beverage of choice and enjoy the video!

Trading Journal – Final Thoughts

A trading journal is a deciding factor between the 5% of traders that are consistently profitable and the 95% that lose money.

Keeping a diary of your trading activity will help you review your results, weed out any weaknesses and highlight your strengths. Which in effect will help you optimize your strategy, increase performance and maximize profits!

If you don’t already, make sure to start keeping a trading journal as soon as possible and see the benefits that it can provide for your trading!

If you want to join us in our live trading room, check out the Pro Trader package here >

Want to trade more passively, checkout our newsletter, trade ideas and live analysis in the Swing Trader package here >

The information contained in this post is solely for educational purposes, and does not constitute investment advice. The risk of trading in securities markets can be substantial. You should carefully consider if engaging in such activity is suitable to your own financial situation. TRADEPRO Academy is not responsible for any liabilities arising as a result of your market involvement or individual trade activities.

How to Keep a Trading Journal the Easy Way

Robert Deutschman/Getty Images

Trading journals help traders track their trades and thoughts throughout the day. It’s a great tool because a thorough journal includes details beyond what you can see on your brokerage statement. It includes what market conditions were like and if you were distracted or made mistakes. It’s also where you can record strategy ideas which may arise as you trade throughout the day.

All traders should keep a trading journal, but day traders don’t have time to be spilling their guts on paper all day. Keeping a trading journal while trading — when the action is happening — actually could be counter-productive and lead to missed trades.

There’s an easy solution, though, that involves absolutely no handwriting and gives you a historical record of the exact market conditions you were facing on a particular day.

The Easy Way

A picture tells a thousand words, right? Perfect, let’s use a picture. Instead of writing about market conditions, mistakes, what went well, and new strategy ideas, take a screenshot of the trading day with some typed annotations on it.

Most traders mark up their charts throughout the day, drawing lines and marking indicator levels which help determine the trend and find possible reversal/target points. The chart shows the exact market conditions being traded. Intraday analyses can show your perception of the market that day — something words in a trading journal never could describe as well.

A picture is an easy way to keep a trading journal, but you must include certain things to make it useful when you look back at it for review.

How to Mark Your Charts

These basic guidelines for marking up your charts will make them useful for future reference.

  • Include an hour or two of price action before you begin trading, if applicable. This provides a context for what was happening when you started trading. You don’t need to include price action from the prior day. Doing this can help you better assess time frames to watch while trading.
  • Mark your start time with a vertical line or text note on the chart. It lets you know if you started trading early or late, and/or why you may have missed some trade signals earlier in the day.
  • Write down the times of major economic events you will be stepping aside for. When that time comes around, make a note again that you weren’t trading because of news.
  • Make text notes throughout the day about tendencies and market conditions you notice. If you make an error, make a note of it. If you miss a trade, make a note of it.
  • Keep as many trendlines and drawings on your chart as possible, assuming they don’t distract you. They help to show your future self how you were seeing the market in real time at any given moment.
  • Mark when you stop trading for the day with a vertical line or text note.
  • Type how many trades you made, how many winners, the total profit for winning trades, how many losers, the total loss for losing trades, and the net result. Avoid using dollars, which fluctuate based on position size. Instead, use pips for forex, cents for stocks, or ticks/points for futures. For example, if trading the ES Futures contract, instead of writing “4 winners, $400; 4 losers, $200 = net +$200,” write “4 winners, 8 points; 4 losers, 4 points = net +4 points.”

At the end of the trading day take a screenshot of your chart and paste it into a photo editor. It should include all the information above. If you can’t see everything on one chart, take two or three shots and save them separately.

Save each day with the date as its file name, and keep them in trading folder saved to an easily accessible location on your computer or in the cloud. Create subfolders for each year and month to make the files more easily searchable.

Reviewing Your Journal

At the end of each week and month, go back and see what you did, notice common problems, and spot your strengths. These observations can help you exploit your strengths and highlight the areas you need to work on.

Taking screenshots is more effective at capturing information than you could by just writing in a journal. Plus, if you do want to write stuff down, you can do so right on your charts, or keep a written trading journal as well. Be diligent in this routine, so that you have every trade you make recorded.

Controlling sales conversations: 3 steps to keep your sales calls on track

Imagine yourself telling a difficult prospect, “You’ve enlisted my expertise and you’ve rejected it to go on the way you’ve been going. I’m not interested in that.” Before you can walk away, the once reluctant prospect is now anxious to do business with you.

Don Draper effortlessly pulled off those killer lines on the hit show Mad Men. However, when faced with a difficult prospect in real life, what should you do?

The fact 80% of business is lost to no decision at all implies most salespeople aren’t good at leading conversations. In sales, you must guide the prospect to a clear decision. Yes or no is good; indecision will kill you.

The key to controlling any sales call is to have a clear goal beforehand, ask questions, use friendly strength and know how to deal with prospects who:

  • Refuse to answer questions
  • Have an endless amount of objections
  • Delay the sale by saying they’ll buy soon

Let’s break down how to lead every sales call with power.

Get exclusive access to the free B2B cold calling course to learn how to cold call like a pro.

1. Start with a clear goal

Deals aren’t won or lost during the call. Before you even pick up the phone, your mindset determines the outcome.

Before any important call, ask yourself: Why am I calling? What do I want to accomplish? How am I going to accomplish this?

Your first response to “Why am I calling?” might be superficial: “I’m calling because the prospect is in my pipeline.” Go deeper. Ask yourself “why?” four more times to discover your higher purpose.

Next, determine, “What do I want to accomplish?” Visualize your goal in detail.

Finally, figure out “How am I going to accomplish this?” Vision without a plan is just a dream—outline the exact steps.

These questions will empower you to lead the sales call with clarity.

2. Ask your prospects questions and listen

When you ask questions during a call, you uncover your prospect’s needs and enable them to find their own solutions.

While the wrong questions will turn you into a passive listener, the right questions will allow you to direct the conversation. Here’s how to ask powerful sales questions.

3. Use friendly strength

Finally, take charge of the call with friendly strength.

When you’re selling, don’t be a wolf or a lamb. While prospects don’t want to be strong-armed into a deal, neither do they want to work with unopinionated doormats.

Instead, use friendly strength. Listen to your prospect’s needs. Use your expertise to lead the call. Challenge their thinking.

In fact, challenging your prospect is good: “More than 53% of what drives B2B customers’ purchase decisions is the salesperson’s ability to teach the customers something new or challenge their thinking.”

Create win-wins for you and your prospect with friendly strength.

How to take control of a call with difficult prospects

At this point, you have a clear goal and understand the importance of asking questions and using friendly strength. Now, we’ll cover the exact things you should say to a difficult prospect.

The prospect refuses to answer your questions

According to researchers, “The typical B2B customer is 57% along in the purchase decision before they engage directly with any supplier.” This can negatively shift the power dynamics in a sales conversation. In some cases, the prospect will refuse to answer any questions.

If you’re faced with this situation, here’s how to regain control of the call:

  1. Make a supporting statement: “In a typical vendor and buyer relationship, that’s a really good process, and it’s served you well.”
  2. Re-frame the issue: “But we like to be more than just a vendor. We actually want to be a partner.”
  3. Make your case: “In order to be a partner, it’s important we understand the needs of our software users.”
  4. Sell an additional benefit of green-lighting your questions: “I suggest we take just five minutes to explore how our product relates to your needs. This will either make the next 45 minutes more productive or save both of us a lot of time if we discover we’re not the right fit.”
  5. Transition into your first question (without waiting for permission): “Does that sound fair? I have three crucial questions that will influence the way I present our product.”

If the prospect still refuses to answer questions, either sell the way they want to buy or walk away.

The prospect has an endless amount of objections

What if you have the opposite problem—a prospect with a ton of objections?

First, let them talk themselves empty. Don’t argue—listen.

Once they’re finished, ask them, “Out of everything you mentioned, what’s a deal-breaker, what’s important, and what’s nice-to-have?” Focus on managing the deal-breaking objections.

Follow up by asking, “If we could address these particular things, would you consider us the right solution?”

If they say no, ask, “What else do you need?”

Until you address their deal-breakers and important requirements, ignore the nice-to-haves. Concentrate on the main issues.

The prospect delays by saying they will buy soon

“I’ll buy soon” is a hidden minefield. The conversation might’ve appeared successful but “unexpected” issues will keep popping up, delaying the deal indefinitely.

Be direct with the prospect: “Is there anything that could threaten our partnership or prevent this contract being signed?”

This will help you:

  • Identify obstacles to stopping the deal
  • Confirm the prospect’s commitment to buying
  • Close the deal faster

If the prospect still isn’t ready to buy, discover why. If you can solve the issue, solve it. If you can’t, end the call by restating your interest in making the deal happen and what the next steps should be.

Control the call, control the sale

Before any call, remember to ask yourself “Why? What? How?” Having a purpose and game plan will give you focus. Then, ask questions, listen, and use friendly strength to control the call.

Whether the prospect is tight-lipped, contentious, or delaying, the same principles apply. The only thing that will change is the type of questions you ask.

If the prospect still refuses to compromise, walk away. Find another prospect who appreciates your expertise and create win-wins.

How to captivate your prospect’s attention
Here’s a simple 3-step process to make your message stick: Highlight the highlights. Mark what’s memorable. Ask for attention.

How to deal with hostile and aggressive prospects
In sales, hostile or difficult prospects are inevitable. Don’t be a pushover or overly aggressive—there’s a better way to handle rude prospects.

13 killer B2B sales questions to close more deals
Ask these 13 B2B sales questions to close more deals and make more sales.

Use the 3-D Process To Keep Your Trading on Track

If you see any errors in this tutorial or have comments, please let us know. This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Daniel Shiffman

There are five render modes: the default renderer, P2D, P3D, PDF, and SVG. To use a non-default renderer, you can specify via the size() function.

Now, you may be wondering: “Which render mode should I choose and why?” The mode itself tells Processing what to do behind the scenes when drawing the display window. For example, the default renderer employs existing Java 2D libraries to draw shapes, set colors, display text, etc. When deciding which renderer to use, you are balancing a number of factors: speed, accuracy, and general usefulness of the available features. In most cases, particularly when you are first learning Processing, you will want to use the default renderer setting. It provides the most elegant and accurate results when drawing in 2D.

Switching to P2D or P3D is advisable given one of the following scenarios:

  • You are drawing in 3D! In three-dimensional space, a third axis (the z-axis) refers to the depth of any given point. How far in front or behind the window does a pixel live? Now, we all know there are no actual pixels floating in the air in front of or behind your screen! What we’re talking about here is how to use the theoretical z-axis to create the illusion of three-dimensional space in your Processing window. P3D is required for this.
  • You want your sketch to run faster! P2D and P3D make use of OpenGL-compatible graphics hardware. In other words, some of the work required to draw all the pixels in the window can happen on your computer’s graphics card which is often more efficient. Keep in mind that OpenGL is not magic pixie dust that makes any sketch faster (though it’s close), you will also need to carefully consider the techniques you are using to do the drawing as well. In particular, using the new “shape recording” functionality available in PShape (see PShape tutorial) can greatly increase speed in P3D mode.
  • You are drawing in 2D but want to use a particular graphic effect not available in default renderer! Some graphics functions are only available in P3D such as textures and lighting (see below).

3D Transformations

Before we begin drawing in 3D, it’s important to note that as soon as we give ourselves over to the illusion of 3D space, a certain amount of control must be relinquished to the P3D renderer. You can no longer know exact pixel locations as you might with 2D shapes, because the 2D locations will be adjusted to create the illusion of 3D perspective.

In order to draw something at a point in three dimensions the coordinates are specified in the order you would expect: x, y, z. Cartesian 3D systems are often described as “left-handed” or “right-handed.” If you point your index finger in the positive y direction (down) and your thumb in the positive x direction (to the right), the rest of your fingers will point towards the positive z direction. It’s left-handed if you use your left hand and do the same. In Processing, the system is left-handed, as follows:

In other words, positive is coming at you, negative is moving away from you. Let’s say we want to draw a rectangle that moves towards the viewer using P3D. We know that to draw a rectangle, the rect() function takes four arguments: x location, y location, width, and height.

Our first instinct might be to add another argument to the rect() function.

This, however, is incorrect. In order to specify 3D coordinates for shapes in Processing, you have to use translate(). Now, translate() is not exclusive to 3D sketches and is quite commonly used in 2D. In fact, there’s an entire 2D transformations tutorial that I suggest you stop and read right now unless you are already comfortable with the concept of translation (and rotation) in Processing. Assuming, however, that you are already familiar with how translate() works in 2D, there isn’t a lot to learn here beyond the addition of a single argument. In 2D, translate looks like: “translate(x,y)”, and 3D we add one more argument: “translate(x,y,z)”.

The third dimension also opens up the possibility of rotating around different axes. When we say plain old rotate() in Processing, what we are really saying is rotate around the Z axis (i.e. spin on the plane of the window itself). In 3D, the equivalent is rotateZ().

We can also rotate around the x and y axes.

As well as multiple axes at a time.

3D Shapes

Once you know how to translate and rotate around a three-dimensional coordinate system, you are ready to draw some three-dimensional shapes. You are probably quite comfortable with drawing shapes in 2D whether primitive (line(), rect(), ellipse(), triangle(), etc.) or custom (beginShape(), endShape(), and vertex()).

The good news is that shapes in 3D work pretty much the same way. There are primitive shapes that you get for free such as box() and sphere() as well as custom shapes you can make with calls to vertex().

In the above example, note that the functions box() and sphere() each only take one argument: size. These 3D shapes cannot be positioned via arguments, rather you should use the translate() and rotate() methods described previously.

Custom 3D shapes are drawn using beginShape(), endShape(), and vertex() by placing multiple polygons side by side. In 3D, the vertex() function takes 3 arguments: x, y, and z. Let’s say we want to draw a four-sided pyramid made up of four triangles, all connected to one point (the “apex”) and a flat plane (the “base”).

Note above how it’s often simpler to specify vertex locations using a standardized unit of measure (i.e. 1 pixel) and relative to a point of origin (0,0,0). The size and position of the shape is then set using matrix transformations: translate(), rotate(), and scale(). For some examples of more sophisticated custom shapes built in 3D, take a look at these examples: RGB Cube, Vertices, Toroid, Isocahedra.


With the P3D renderer, you can load and display images just like you do in 2D (see: Images and Pixels Tutorial). Everything covered under transformations can be applied to images; they can be translated, rotated, and scaled in a virtual 3D space. In addition to drawing an image the old-fashioned way, however, images can be made into “textures” and applied to a shape. This is particularly useful when you want a 3D shape to resemble a real-world object. For example, applying an image of earth as a texture on a sphere will result in a globe. To apply an image as a texture to a shape, we first need to define the shape using beginShape() and endShape() as demonstrated in the previous section. Let’s say you are drawing a rectangle, like so:

The above example is a simple square with four vertices, a white outline, and a grey fill. To apply an image to the shape, we have to follow three steps.

1) Load an image into a PImage object.

2) Call texture(). The texture() function must be called between beginShape() and endShape() and before any calls to vertex(). The texture() function receives only one argument, the PImage that will be applied as a texture.

Once we have specified the texture itself, we have to then define the mapping of the image to the shape itself. This is a simple problem when the shape is rectangular (four corners of a shape map to four corners of an image), but grows more complex when you have many more vertices in a shape (such as in the globe example above). To define the mapping, two more arguments (usually referred to as u and v are added to each call to vertex(). By default, the coordinates used for u and v are specified in relation to the image’s size in pixels, but this relation can be changed with textureMode(). In addition, when textures are in use, the fill color is ignored. Instead, use tint() to specify the color of the texture as it is applied to the shape.

If the above seems like a trivial example, that’s because it is. After all, if we’re just going to texture a square, we can just draw the image using image(). Nevertheless, understanding the above process opens up a world of possibilities as we can now apply image textures to arbitrary 2D and 3D shapes. For some examples of more sophisticated mappings, check out Texture Triangle, Texture Cylinder, Texture Cube, and Textured Sphere.

As mentioned in the PShape tutorial, you can also texture PShape objects with the setTexture() function. PShape’s setTexture() automatically textures the shape without having to specify uv coordinates and is useful for simple scenarios like texturing a sphere (where doing it with beginShape() and endShape() would be extraordinarily complex (as seen in Textured Sphere). The following code demonstrates how easy it is to texture with PShape .


In P3D, you can also manipulate the lighting of the elements in your scene. Of course, just as drawing in three-dimensions is an illusion, the addition of lighting to a Processing sketch is a simulation of the idea of real world lighting for the purpose of creating a variety of effects. This is particularly useful since some objects (such as a sphere) do not appear three-dimensional until they are lit.

If you don’t want to get into the details of setting custom lighting for a 3D scene you can use Processing’s lights() function which sets default lighting. Take a look at the following example, where a sphere is lit with default lighting only when the mouse is pressed.

Note how the call to the lights() function is included in draw(). Just as with matrix transformations, the 3D scene is reset each time through draw() and therefore any lighting must be included in order to remain persistent.

In order to set custom lighting for your scene there are four different kinds of lights.

    ambientLight() — Ambient light doesn’t come from a specific direction, the rays of light have bounced around so much that objects are evenly lit from all sides. Ambient lights are almost always used in combination with other types of lights. An ambient light is specified with an RGB color and, optionally, an xyz location for the light. For example, a blue ambient light can be added to a scene as follows:

directionalLight() — Directional light comes from one direction and is stronger when hitting a surface squarely and weaker if it hits at a gentle angle. After hitting a surface, a directional lights scatters in all directions. A directional light is specified with an RGB color and an xyz vector that defines a direction for the light. For example, a green light that comes from below the scene can be added to a scene as follows:

spotLight() — A spotlight is similar to a directional light, but allows you to control the lighting effect with greater specificity. Just as before, the light is defined with a color and direction. However, it also requires an xyz location for the light as well as an angle that controls the spotlight cone. A small angle value will result in a highly focused light and a larger angle will result more of a wash of light. Finally, a last argument determines the concentration of the light, how biased is the light towards the center of the spotlight cone. Here are the arguments you’ll need for a concentrated red light, located in front of the Processing window and pointing straight back.

  • The red color: 255, 0, 0
  • Located in front of a Processing window: width/2, height/2, 400
  • Pointing straight back: 0, 0, -1
  • A small angle: PI/4
  • Concentration: 2

All together it looks like:

  • pointLight() — A point light is a spotlight with a 180 degree cone. To create a point light, you only need an RGB color and a position.
  • For additional examples of lighting in Processing, take a look at: Lights on off, Spot, Directional, Reflection.


    P3D mode consists of two different “projection” modes which control the way the renderer creates the 3D illusion. “Perspective” mode is the default and uses the trick of displaying objects that are farther away as smaller. This effect is commonly referred to as “foreshortening.” In most cases, you don’t need to specify the parameters of perspective projection, but you can with the perspective() function. The parameters of the function define a viewing volume with the shape of truncated pyramid. Objects near to the front of the volume appear their actual size, while farther objects appear smaller. The triangle has a field of view (angle in radians), an aspect ratio, and a maximum and minimum z location that defines the clipping plane (how far and how close Processing will actually bother to try to render things). An example (that recreates the default perspective) looks like so:

    It’s not too often you’ll need to change these parameters, but if you do, altering the field of view (“fov”) tends to have the effect of zooming objects in and out (as the viewing volume grows and shrinks) and changing the aspect ratio can skew the rendering of objects making the appear fatter or skinnier. For an example of this, take a look at: Perspective.

    The other projection mode available in P3D is known as “orthographic” projection. In orthographic mode, all objects with the same dimension appear the same size, regardless of whether they are near or far from the camera. This is commonly used to achieve a certain visual style, such as one found in early video games like Q-Bert. To enable orthographic projection, all you need to do is call ortho() ortho() doesn’t require any arguments, although you’ll see there are some optional ones to define a clipping plane. Following is an example that shows a scene in both projection modes, depending on whether the mouse is pressed.

    (left image is perspective and right image is orthographic)


    When looking at a 3D scene in a Processing window, we can think of our view of the scene as a camera. Zoom in closer to the objects and we can imagine a camera zooming in. Rotate around the scene and the camera rotates. Of course, there is no actual camera, this is just a convenient device to help us understand how to traverse a 3D scene. Simulating a camera can be done through clever transformations at the beginning of draw() by using translate(), rotate(), and scale() to manipulate our view of the scene. Nevertheless, for convenience there is also a camera() function whose purpose is also to simulate a camera. The function defines a camera as having an “eye position”, i.e. the camera location, a scene “center” which tells the camera which way to point, and an upward axis which aligns the camera vertically.

    The default camera position is essentially right between your eyes: a location out in front of the window aligned straight up and pointing towards the screen. Here are the numbers for the default position.

    • Eye position: width/2, height/2, (height/2) / tan(PI/6)
    • Scene center: width/2, height/2, 0
    • Upwards axis: 0, 1, 0

    When written in code, this looks like:

    Any of the arguments in the camera() function can be made into a variable to simulate camera movements. For example, by moving the x position of the eye according to the mouse, you can rotate around an object to see it from a different angle.

    Best Binary Options Brokers 2020:
    • Binarium

      The Best Binary Options Broker 2020!
      Perfect For Beginners!
      Free Demo Account!
      Free Trading Education!

    • Binomo

      Good choice for experienced traders!

    If you move both the eye position and the scene’s center according to the mouse, you can create the effect of panning.

    Best Binary Options Brokers 2020:
    • Binarium

      The Best Binary Options Broker 2020!
      Perfect For Beginners!
      Free Demo Account!
      Free Trading Education!

    • Binomo

      Good choice for experienced traders!

    Like this post? Please share to your friends:
    How To Make Money on Binary Options Trading
    Leave a Reply

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: