Cubic Splines A cubic spline is constructed from a series of piecewise third degree polynomials. Given \(n\) control points \(\{(x_0,y_0), ... , (x_{n-1}, y_{n-1}) \}\) We can construct \(n-1\)...
Robotics Blog: Quintic Polynomials
Introduction Quintic splines are a common path parametrization in robotics. A quintic polynomial is a 5th order polynomial. Each dimension \((x, y)\) is represented as a quintic polynomial. The ...
Cpp Blog: Exceptions
Cpp Blog: Exceptions This post contains my notes from Klaus Iglberger’s talk on Exceptions from CppCon 2020. Back to Basics: Exceptions - Klaus Iglberger - CppCon 2020 - YouTube Intro to Excepti...
Cpp Blog: Atomics, Locks and Tasks
Cpp Blog: Atomics, Locks and Tasks These are my notes from CppCon from Rainer Grimm’s talk titled “Atomics, Locks and Tasks”. Definitions A data race occurs when two threads access shared stat...
Cpp Blog: Move Semantics Part 2
Forwarding References A forwarding reference is like a shapeshifter. It is an lvalue if initialized by an lvalue and rvalue if initialized by an rvalue. They typically appear in the form of T&am...
Cpp Blog: Move Semantics Part 1
This is a video summary of Klaus Iglberger talk at CppCon 2019 titled “Back to Basics: Move Semantics (part 1 of 2)”. What does it mean to move something? Moving an object in C++ allows us to a...
Cpp Blog: Return Value Optimization & Named Return Value Optimization
Return Value Optimization (NRVO) & Named Return Value Optimization (NRVO) Cope samples borrowed from Shahar Mike’s Web Spot. What is this? NVO and NRVO are two types of return value optmizat...
Cpp Blog: Curiously Recurring C++ Bugs at Facebook
This is my summary of a CppCon talk by Louis Brandy on the “Curiously Recurring C++ Bugs at Facebook”. Bug 1: std::vector::operator[], array[], *ptr It is quite common for us to check the index...
Cpp Blog: Header-only vs. Static vs. Dynamic Libraries
Header-only vs. Static vs. Dynamic Libraries Libraries are collections of reusable code for others to use. Static and dynamic libraries will expose header files that define the functionality of th...
Cpp Blog: Rule of 5, 3, 0 in C++
Rule of 5, 3, 0 In C++ there are six functions that pertain to the lifecycle management of an object: constructor, copy constructor, copy assignment operator, move constructor, move assignment ope...