TIL about Webots capabilities; Dug in Core Graphics documentation
Read Webots (open-source three-dimensional mobile robot simulator) User Guide.
Webots is a professional mobile robot simulation software package. It offers a rapid prototyping environment, that allows the user to create 3D virtual worlds with physics properties such as mass, joints, friction coefficients, etc. The user can add simple passive objects or active objects called mobile robots. These robots can have different locomotion schemes (wheeled robots, legged robots, or flying robots). Moreover, they may be equipped with a number of sensor and actuator devices, such as distance sensors, drive wheels, cameras, motors, touch sensors, emitters, receivers, etc. Finally, the user can program each robot individually to exhibit the desired behavior.
This bug in WeScan gets me dipper and dipper. This code for rotating UIImage which I was intended to use has a bug which I am struggling to find. Something important related to affine transform and user/device coordinate systems slippers from my mind.
New Core Graphics reference documentation starts nicely, but later refers to looking old but still useful Quartz 2D Programming Guide.
Coordinate Systems and Transforms.
Completely missed following.
Getting the User to Device Space Transform
Typically when you draw with Quartz 2D, you work only in user space. Quartz takes care of transforming between user and device space for you. If your application needs to obtain the affine transform that Quartz uses to convert between user and device space, you can call the function CGContextGetUserSpaceToDeviceSpaceTransform
.
Quartz provides a number of convenience functions to transform the following geometries between user space and device space. You might find these functions easier to use than applying the affine transform returned from the function CGContextGetUserSpaceToDeviceSpaceTransform
.
- Points. The functions
CGContextConvertPointToDeviceSpace
andCGContextConvertPointToUserSpace
transform aCGPoint
data type from one space to the other. - Sizes. The functions
CGContextConvertSizeToDeviceSpace
andCGContextConvertSizeToUserSpace
transform aCGSize
data type from one space to the other. - Rectangles. The functions
CGContextConvertRectToDeviceSpace
andCGContextConvertRectToUserSpace
transform aCGRect
data type from one space to the other.
Read Coordinate Transforms in iOS using Swift, Part 0: The Problems. Coordinate Transforms in iOS using Swift, Part 1: The L Triangle. But now. Instead of explaining and making things simpler it brings new staff to the table and make more complex.
Bookmarking usage of exiftool
CLI for removing all exifs from a file: exiftool -all= path_to_files
. Space after =
is important! Original photos are saved in file with extension like .jpeg_original
.