Shop Mobile More Submit  Join Login
About Digital Art / Hobbyist Morgan R. Lewis36/Male/United States Group :iconsuperherorenders: superherorenders
Recent Activity
Deviant for 8 Years
Needs Core Membership
Statistics 711 Deviations 1,897 Comments 72,652 Pageviews

Newest Deviations

Random Favourites


Sorry for the radio silence, which I know isn't terribly unusual for me. This time it wasn't mere distractedness at work, though. Just a case of a nearly intractable problem with one of my projects.

I uploaded my Icons: Plaques pack on May 4. I figured the hearts pack would follow shortly after. But then I had a bad thing: an idea. I thought it might beef the pack up a little bit if instead of just having a couple heart variants, I also included a couple heart outline variants. But it's not as easy to do an outline of a heart as it is to do an outline of a regular polygon. If you've ever tried scaling a concave shape, you know exactly what I mean -- the scaled version overlaps in odd ways, and it doesn't look like an outline. If you want an outline, you essentially have to draw a new shape: one that's different from the original shape in more than just scale. You can see the difference between scaling and an outline below.

Outline Example by MorganRLewis

Doing this precisely is almost impossible by hand, so it'd be nice to have a PSP script to do it (I do all my vector work in PSP, even if I later wind up exporting it). This goes back to a problem that has vexed me for years: how to do a pseudo-"scaling" operation on a shape, not by directly scaling it, but by ensuring that the edges of the new shape are always distance X away from the original shape's edges. It's easy enough to do with straight edges, but vector objects aren't always all straight edges. Well, I knew it must be possible, but it wasn't an algorithm I could derive on my own, and it's been too long since I've taken geometry or calculus. And search after search online failed because I could not figure out what the proper terminology for the operation was. So I spent a few days knocking my head against the wall on that once again. It took about a week before I finally stumbled across the proper terminology: what I was looking for is how to offset every Bezier curve by a particular distance.

Ten years or so spent looking in vain for this solution because I couldn't remember the word "offset".

But then implementing it was not an easy process either. It's a heuristic algorithm, and indeed it's only an approximation -- the true offset of a Bezier curve isn't a Bezier curve itself (it changes degree), so if you want to end up with Bezier curves, which was necessary here, you have to essentially piece things together. There are a lot of branching if-else statements necessary to account for all possible situations. This isn't the longest PSP script I've ever written, but it's up there.

I finally got it mostly together last night. But even so, I'm not sure it's ready for release. Normally when I write a PSP Script, I upload it here in case anybody else finds it useful; I think the only exception is the Vector-to-COB script, and that's simply because the odds that anybody else has a workflow that involves both Paint Shop Pro vectors and Caligari trueSpace NURBs curves are pretty damned small. But I may hold off on this one, even though I know it'd be useful to people. Why? Because there are still a lot of issues to iron out with it, and right now, I don't know how many of them are bugs with the script, bugs with Paint Shop Pro, bugs with Python, or are just inherent to the situation (i.e., things the user has to work around). If I were to release it, I'd have to put out a Known Issues list longer than the script itself. And right now, I'm a little too burned out on it to tackle it further for a little while.

But in the meantime, it's something that I can use myself. So the outlines are back on the table, and the next Icons pack should be along soon.
  • Mood: Movingon
  • Listening to: Roxette
  • Reading: Don Rodriguez: Chronicles of Shadow Valley
  • Watching: Drop Dead Fred
  • Playing: Lego Star Wars
  • Eating: Chocolate Cake
  • Drinking: Lemonade


MorganRLewis's Profile Picture
Morgan R. Lewis
Artist | Hobbyist | Digital Art
United States
I'm a web developer living in Springfield, OR; in my spare time, I tinker around with 3D and vector graphics, and watch more movies than is probably healthy.

AdCast - Ads from the Community



Add a Comment:
Saidge42 Featured By Owner Apr 3, 2015

:iconthankyouscript1::iconthankyouscript2::iconthankyouscript3:   :iconbigfav4plz:   :iconfavesmile:

LegacyArtist Featured By Owner Apr 1, 2015  Professional General Artist
Thank you for the favorite.
anironbutterfly Featured By Owner Feb 2, 2015  Hobbyist Digital Artist
:cake: :party: :D
MorganRLewis Featured By Owner Feb 2, 2015  Hobbyist Digital Artist
Thank you!
anironbutterfly Featured By Owner Feb 3, 2015  Hobbyist Digital Artist
You're welcome! Hope it was a great one!
MorganRLewis Featured By Owner Feb 3, 2015  Hobbyist Digital Artist
It was. Celebrated a day early, and just took it easy on my actual birthday.
(1 Reply)
TinaEvil Featured By Owner Feb 2, 2015
Flowers fella (Love) fella's Gobbler (Party) Blower fella (Party) fella Gift (Party) 
MorganRLewis Featured By Owner Feb 2, 2015  Hobbyist Digital Artist
Thank you!
MerlinsArtwork Featured By Owner Oct 9, 2014  Professional Digital Artist
Thanks very much for the :+devwatch: :D
lucia45 Featured By Owner Sep 29, 2014  Hobbyist Digital Artist
Thanks for the :+devwatch:!
Add a Comment: