Tuesday, February 26, 2013

Scene Navigation Zoom Tracking

In my last post I began working on a 2D scene manipulation system for an upcoming project. One of the design goals was to have a "smart zoom" feature which would track to where the mouse was. This is one of my favorite scene navigation tools as all I had to do to focus on a particular area was put my mouse in the center of that area and zoom in. I could also "pan" around the view by zooming out/in while moving my mouse around. Two applications that I know have this feature off the top of my head are SolidWorks and Eagle, though I really wish this feature was in all applications which require any type of scene navigation. I didn't have this feature implemented last time because I wasn't quite sure how to do it. However, I have since figured out how this feature can be implemented.

Tuesday, February 19, 2013

A Better 2D Scene Manipulation Widget for Qt


I'm currently working on a project which requires a good 2D scene manipulation system. The application is being built with the Qt C++ framework. Initially I investigated using the base QGraphicsView class, but it really doesn't have the functionality I want so I'll have to roll my own solution somehow (either extend it or start from scratch).

For those curious as to what I want the ultimate look and feel to resemble, my inspiration for this design is based loosely off of other interfaces I've been highly impressed with. The two best similar type of interfaces I've used are the Blender and SolidWorks user interfaces. These programs are designed to work predominantly with 3D viewports, but my application only requires a 2D viewport. More details on the actual project will hopefully come later, depending on how committed I am to this project.

Tuesday, February 12, 2013

Intro to Microcontrollers


Probably one of the greatest inventions in the world of electronics is the microcontroller. These are integrated circuit chips which can be programmed to interface with a wide variety of sensors, actuators, and other electrical components. They're general low-power and are fairly wimpy compared to an actual computer, or even many people's mobile devices.

I've had previous experience with microcontrollers using the Arduino Platform. This is a wonderful little board with an AVR microcontroller, USB port, and various IO pin functions. However, Arduinos aren't really that cheap. It's possible to get one for around $20 US, though they can get up to $60 or so if you get one of the bigger Arduino Megas. To contrast this, there are many microcontrollers available for under $5. These won't have all of the capabilities as the microcontroller used by Arduinos, but many times this isn't necessary. For my testing I'm going to use an ATtiny24A AVR microcontroller. It's an extremely low-power 14-pin microcontroller which can run up to 20 MHz. There's 2K of flash program memory, 128 bytes of EEPROM, and 128 bytes of SRAM.

Tuesday, February 5, 2013

Setting up Git on a Server


I've been testing out Git a bit more recently. The main feature that interests me is the way Git branches. It's light-weight and is managed pretty well by the Git software. for more information, see Chapter 3 of the Git Book.

My plan is to use Git for synchronizing changes I make in my local development for my web server with the live version. I also want Git to manage a development server path which will switch to the branch I last pushed to for testing purposes. Luckily, both of these are fairly simple operations.