# Search the Community

Showing results for tags 'equations'.

• ### Search By Tags

Type tags separated by commas.

### Forums

• Affinity Support
• News and Information
• Affinity Support & Questions
• Feature Requests & Suggestions
• Learn and Share
• Tutorials (Serif and Customer Created Tutorials)
• Resources
• Bug Reporting
• Report a Bug in Affinity Designer
• Report a Bug in Affinity Photo
• Report a Bug in Affinity Publisher
• (Pre 1.7) Affinity Range Bugs Forums
• Beta Software Forums
• Affinity Designer Beta Forums
• Affinity Photo Beta Forums
• Affinity Publisher Beta Forums

• 0 Replies

• 0 Views

### Interests

Found 29 results

1. In a recent post in Questions, @Maxxxworld asked how he could warp an image to apparently wrap it around a bottle. I posted a solution to his problem there, which I expand upon here. Consider the facing semicircle of the bottle as seen in this diagram: The visible part of the label extends from -90 degrees (on the left, not shown) to 90 degrees on the right. This will correspond to the width of the original image. This will project onto the final width of the image (the line below). The final width is less than the original width by a factor of pi/2. A bit of trigonometry shows that the sine of the Angle indicated is given by (x-halfwidth)/halfwidth, where halfwidth is both the label and the final image. Putting this together and re-arranging a bit gives us an Equation: x=(asin(2*x/w-1)*w/180)*pi/2+w/2 A bottle is typically viewed from above, so that the label has a curve, typically with a dip in the middle.This can easily be simulated using equations, using: y=y-Const*x*(w-x)/w/w The Constant determines the depth and direction of the curve. I have used the expression w*(0.5-a) as a scaling factor, where a is a parameter chosen at runtime. This will change the curve from negative (curving down) at the default a=1 to positive at a=0. Inserting this into the equation gives: y=y+(0.5-a)*x*(w-x)/w Note that the w in the numerator and denominator cancel out. The value of (0.5-a) determines the curvature as described above. As an example, here is the Great West Window of Chester Cathedral. I chose this because it has lots of verticals to see how the filter affects it. (It has verticals once I had put it through the Mesh Warp.) And here is the image after the filter: Before filtering I cropped it close to the sides of the window and then Rasterized it to remove the invisible sides. I then added space at the top and bottom to allow room for the curvature part to operate. I then followed this by Clip Canvas to remove surplus transparent ends. The calculations for this filter are complicated by the algorithm that Affinity uses to effect these equations, which I explain in this Tutorial here. I have created a macro that effects the filter, and then uses Clip Canvas. By clicking on the cogwheel, you can alter the degree and direction of curvature. EDIT: I have discovered that this macro will only perform once (per Affinity Photo session). I add here a version recorded in version 1.8 which does work properlyin Photo 1.8: WrapAround1.8.afmacro I alos onclude here the original macro, recorded in version 1.7: WrapAround.afmacro John
2. I think it would be nice to be able to store distort equations in a similar way to the procedural texture equations preset panel. At the moment it seems the only way to store distort equations is to either jot them down in another app somehwere, or store them in a macro. When you store them in a macro you lose the equation, so you can't go back to it, which is kind of annoying. I've currently got my equations building up a text document, but working like that doesn't fit the nice workflow that the other features have. Also, with the procedural textures panel if you accidentally apply before storing the preset you lose the equation, would it be possible to have a persistent edit buffer that populates the dialogue with the last equation you used, rather than it opening with a blank panel each time? It's really easy to spent time messing about to get an interesting pattern and then pressing apply to see the pattern properly (with the anti-aliasing in place), before saving it as a preset ... then it's gone, you've lost all that effort!
5. First post here. I've been working on a composite of images captured during totality & getting some banding artifacts in PS when forced to use 16 bit mode rather than 32 bit for sharpening steps. I'd like to make sure Affinity Photos has the adjustments I need in 32 bit mode. The complete workflow for PS is describe in this tutorial by Russell Brown: PS Spin Blur Eclipse Processing From Photos tutorials, I see there are spin-blur filters, Apply Image: Equations panel & an Equations panel. So maybe everything I node is there but done differently in Photos. The key step I'm unsure about is in one of the equations panels. In PS, a duplicate image is spin blurred & the alpha channel of that image is subtracted from the original alpha w/ an off-set of 128 in the Calculations panel to give a low contrast mid-gray frequency mask. That mask is then Overlayed onto the original. I'd like to confirm that all this can be done in Photos in 32 bit mode? Here is a version of my PS work from 77 images w/ artifacts & a mask. The frequency mask reveals the finer corona detail. Thanks!
6. A useful addition to the Filter > Distort > Equations would be to have access to more than one layer. This would allow me to apply a function to the target layer based on what is in the second layer. It could be used for applying textures similar to displacement map. Obviously t would depend on the function being able to utilize the value of a pixel in the secondary layer. I see in a recent post that Affinity are working on a Macro Persona. I can'wait, but I won'hold my breath! John
7. In a discussion of creating a saturation mask, @dmstraker and @smadell referred to an equation involving channels: Saturation=(max(SR,SG,SB)-min(SR,SG,SB))/max(SR,SG,SB) The only way I can see to access these Source Channels is in Apply Image. However Apply Image deals with two images, a Source and a Destination. This calculation deals with just one. The information on Field Equations in Filter > Distort > Equations makes no mention of channels. How would I create a greyscale saturation layer from an RGB layer, which I can then convert to a mask? John
8. I wrote a macro to convert an image using a Cartesian to Polar conversion. It worked well in 1.6 and I describe it here. I have just tried it in the 1.7 beta and it no longer works. The output is a series of concentric colours, as if just the central axis has been rotated. I have tried running the original macro and also re-creating the macro with the same Equations. John
9. Conversion of a rectangular image to polar co-ordinates using Equations is not straightforward. A major problem is that the origin of the rectangular Cartesian co-ordinates is the top left, whereas for a polar display, you would typically want the origin on the midline, probably near the bottom. The following equations assume that the origin is in the midline along the x-axis, and at or near the bottom on the y-axis. First select Filter > Distort > Equations and enter: x=w*atan((x-w/2)/(h/a-y))/100+w/2 y=h-sqrt((x-w/2)^2+(h-y)^2) The expression (x-w/2) displaces the horizontal origin to the centre, and the expression (h-y) displaces the vertical origin to the bottom. In the first formula, for x, there is a parameter a, which allows you to scale the polar transformation; reducing the parameter a stretches the image around the circle. The 100 is an arbitrary scaling parameter which seems to work. The expression +w/2 at the end re-centres the image. This seems to be necessary, but I am not sure why. I would have expected to deduct w/2 rather than add it! Here is an original image of the Quantum Leap statue in Shrewsbury: With this transform using the default parameter a, this produces a quadrant. And with the parameter set to approximately 0.6: Here is the Macro: PolarQuadrant.afmacro The first thing the macro does is to unlock the image. I tend to do this automatically in macros. It is probably unnecessary. I ought to be able to give the adjustable parameter a, a name, but I have not been able to do this. John
10. WARNING: for the technically-minded only! The Noise functions in the Filters > Distort> Equations facility are supposed to add (unspecified) noise to an image. The only description I can find of this is in the video by James Ritson. He first duplcates the layer and then uses either noise(x*y)*a or noise4(x*y)*a in his equation. This produces a grain-like effect over his image. The documentation for equations is limited. There is the Expressions for field input in the Help system which gives, under : Noise(seed/x,y), an explanation: Generate 1D noise either from a seed or based on X/Y input with similar definitions for noise2, noise3 and noise4. James uses both the noise and the noise4 functions. In his video he is using the single seed parameter x*y, with the magnitude controlled by the a parameter. I have been experimenting with these noise functions and present here my findings Although the Expressions for field input names the functions Noise ... Noise4, with a capital letter, these will not work. You need to use a lower case n for noise. The function noise2 has no effect. The functions noise, noise3 and noise4 seem to produce identical visible results. The histograms are also identical. Using a single parameter, either a simple number, or an expression such as x*y, has no visible effect unless the Full option is selected in the Extend Mode at the bottom. When using two parameters, they need to be different in the x and y axes to produce any visible result. Multiplying the parameters by a number, such as noise(10x,10y), has no visible effect. I show here the effect of varying these parameters on a simple gradient field: Here is the effect of x=noise(x,y) and y=noise(y,x): The results for noise3 and noise4 are identical, as are noise(3x,3y) etc as are the histograms. If the parameters are the same, say x=noise(x,x) and y=noise(y,y) You get a very different effect: Almost like a tartan effect. If the noise functions are the same in both x and y such as x=noise(x,y) and y=noise(x,y), it works OK, but if you use x=noise(y,x) and y=noise(y,x) there is no visible effect unless you select Full: The difference between using Zero and Full in the Extend Mode at the bottom is subtle. Using Full seems to convert the image into a monochrome effect with the background invisible. However, the noise is based on the luminance of the background. Just for comparison, I append here the effect of the effect of the Add Noise filter (Filter > Noise > Add Noise...): You can control the intensity of the noise here, which is more than you can in any of the noise functions I have described. In conclusion, I would recommend that if you want noise, then use the Filter > Noise > Add Noise... option above until such time as the devs at Serif come up with a more understandable noise function in Equations. Having said that I am not holding my breath on this. Using noise in equations is probably a minority pursuit amongst users and the Add Noise filter is much easier. John
11. I was speculating on how Equations could be used to create a ripple-like effect in a reflection. I used an image of a Mill on the River Avon at Tewkesbury. I flipped the image vertically and then applied Filter > Distort > Equations as follows. The main effect is to vary the position of each pixel on the y-axis in a sinusoidal fashion, so I began with: y=y+100*sin(2*360*y/h) The 100 is just a scaling factor for now. This had the right effect but was the same right across the image, so I added a cosine function which would vary the magnitude across the x-axis: y=y+100*cos(10*x/w)*sin(2*360*y/h) Again the 10 here is a scaling factor. The result was: I should be able to tweak this into a macro where the user could vary the amplitude of the ripple, and the amplitude of the horizontal variation. A further tweak could be to add a perspective effect so that the ripples nearer the observer look larger than those further away. What do possible users think. Would this be a useful macro or are there easier ways to get the same effect? John
12. I have updated my Ripples macro originally posted under Tutorials. I am now posting under Resources, since it is really delivering a sort-of-finished product rather than a 'How to'. The new version has three parameters: a controls vertical spacing of the ripples. Reducing the a parameter increases the ripple frequency (reduces the wavelength). b controls the horizontal variation of ripple amplitude across the width of the image. Small values of b make the ripples change a lot across the image. For large values (~=1) the changes cycle two or three times across the image. c affects ripple complexity. This is very much a suck-it-and-see parameter. A value of one adds no complexity, a vale of 1 does. Here is an original image (Tewkesbury Mill inverted): And with the macro applid with a-1, b=0.5 and c-0.5: I have to admit that the results I have had with this macro are varied. Sometimes it is very impressive, but for other images it is definitely not! Here is the macro as a single file and as a library: Ripples.afmacro Ripples.afmacros I have been looking at the Distortions macro in the Macro Pack with mixed results. I have got it to perform, but not consistently. It appears to have no visible effect on the Tewkesbury Mill image. John
13. I would ,like to be able to modify image RBG values based on combination of: a) neighbouring RBG values; b) user parameter inputs. I light to experiment with various colour abstractions of my images. I have not found any expressions in help material, or corresponding forum answers. Is this something already available? If so, where? Otherwsie could this capability be added to the equations/expressions capability of Affinity Photo.
14. This is an extension of my tutorial on Trigonometrical transformations using Filter > Distort > Equations. This one is focused on simulating flags waving in a light wind. Flags have an advantage in that they have a standard shape (width is twice the height). Edit: I have been told that this is not true. I stand corrected. To get the desired waving, I apply a sine transformation to each of the x and y-axes. The equations to apply are: x=(x+20*sin(360*y/h))/c-100*b y=y+a*(h/10)*sin(2*360*x/w)-(x/w)*h/10 I add a sideways sine wave to the x-axis as a function of the y-position. When the flag waves, the visual width is decreased, so I have added a parameter c which scales the width of the flag. The parameter b is an offset, since the left-hand corners of the flag can otherwise move outside the canvas. The y-axis also has a sine wave, depending on the x-position. The parameter a determines the magnitude of this sine wave. The final expression (-(x/w)*h/10) ensures that the fly (RHS in this case) is below the hoist (LHS here). (Definitions: hoist is the part next to the flagpole; fly is the part flying free.) Here is the UK Union Flag, plus a bit of extra space above and below to create room: And waving in the breeze: And here is a macro that implements these transformations: FlagWaving.afmacro And a macro library containing the single macro: FlagWaving.afmacros The parameters should appear when you run the macro. Parameter a controls the vertical wave; parameter b controls the horizontal offset; parameter c controls the overall horizontal scaling. This macro will not simulate a flag in too strong a wind, where the parts overlap! John
15. Many options for rotation in Affinity Photo are constrained to simple fractions of a circle, with 15 degrees being the smallest. It is possible to rotate by an arbitrary angle using the Crop tool. You place the cursor just outside a corner, and rotate by dragging the two-arrowed cursor that appears. This tutorial explains how you can rotate an image using Filter > Distort > Equations. Before rotation you would normally want to expand the canvas so that you can give the document enough room to rotate. The new canvas width should be at least 150% of the existing diagonal and the Anchor should be in the centre of the array of nine positions. See this image: q Now select Filter > Distort > Equations. The top pair of buttons allow you to choose the co-ordinate system. The default is Cartesian (the usual x and y axes). You need to choose the Polar option. You now have two lines: r=r t=t The r represents the radius (the distance of a point from the centre of the image), and the t (or Theta) is the angle of rotation in radians.Radians are a measure based on pi, You can easily express an angle in radians as a multiple of pi, so 2*pi represents the entire 360 degree rotation, pi represents a half-circle rotation (180 degrees) and pi/4 represents a quarter of a half circle, or 45 degrees. So, writing t=t+pi/2 rotates the image by a quarter of a circle counter-clockwise. Entering t=t-pi*0.333 rotates it by a sixth of a circle clockwise. So, given a grid like this (after resizing the canvas): and using the equations as above, gives an image like this: which can then be clipped (Document > Clip Canvas) to give: . I have created a macro with a single parameter a which represents the fraction of pi. The default value of 1 will not rotate the image. Increasing a will give progressively more rotation; a value of 0.5 will rotate by a half-circle. In the example here, I have resized the canvas before applying the macro. The formula used in this macro is: t=t+pi*2*a. Here is the macro: Rotate.afmacro John
16. I recently had difficulty in getting the Distort > Equations Filter to work as I thought it should, I was convinced that there was an error and posted a Bug report here. After comment from members @shojtsy and @walt.farrell and moderators @Andy Somerfieldand @Patrick Connor, I finally got it sorted. I thought that an item in the Tutorials might help for others coming to this problem anew. Consider a simple pair of Equations: x=x+y*0.2 y=y*0.7 My original thoughts were that these represented algebraic transformations, that the value of the pixel at position (x,y) would be moved to pixel position (x+y*0.2, y*0.7). Applying this to the image: gives: The bottom right corner of the image is transparent. My expectation was that the height of the text would be reduced to 70%, but it is actually expanded to approximately 140% (1/0.7). I originally expected the slant to be anti-clockwise, but it was clockwise. My original thoughts and expectations were wrong. What actually happens is quite different. For any pixel at position (x,y), Affinity Photo will find the pixel at (x+y*0.2, y*0.7) and use the value of the pixel value there to apply to the pixel at (x,y). Following this logic, the results are consistent with (revised) expectations. John
17. From previous experience, the y parameter in Distort > Equations goes from top to bottom, as with most graphic programs. I have always assumed this in constructing equations and macros. Recently I have been doing some experiments. This is the base image I have started with, allowing around 25 pixels underneath the rasterized text: I then use y=y+20 and get: and then using y=y-20 to get: which both behave as if the y-origin is at the bottom. I then try multiplying and dividing by a fraction. Firstly y=y*0.7 to get: Then y=y/0.7 to get: These seem to behave in the opposite way to what one would expect. Multiplying by a fraction 0.7 enlarges the image and dividing by 0.7 shrinks the image (leaving a gap at the bottom). These both behave as if the y-origin was at the top. I have tried these in both the current version of Photo and the most recent Beta with the same results. Resolved: it is not a bug. I have posted a Tutorial summarising the resolution of this as a Tutorial. John
18. @atfitzy posted a thread about re-shaping a text block. I tried various Equations in Filter> Distort and the best I could come up with is: x=x y+(h-y)*(w-x)*x/w/w/a This produces the required arch in the upper margin of the block. The a parameter allows the user to increase the stretching effect. The default of one has no effect; reducing it will increase the effect. However, I find that reducing the parameter has no effect until the value goes below half, after which it has the desired effect. I can get the desired effect by putting a multiplier at the start of the equation: y+2*(h-y)*(w-x)*x/w/w/a Here are a couple of arched images using this formula: Otherwise the formula works as desired. Before I commit this to a macro can anyone explain this unexpected behaviour in the parameter value? John
19. I have been trying to use the Filter >Distort > Equations to perform a simple Perspective correction. However when inserting formulae into the Equations filter, it seems to act on the wrong axis. I therefore tried a much simpler pair of formulae: x=x-100*(1-a) y=y-100*(1-b) By default there is no change, since the default parameter value is 1. If I reduce parameter a, a transparent area appears at the top of the image, increasing as I reduce parameter a. If I reduce parameter b, a transparent area appears at the right of the image, increasing as I reduce parameter b. So, the formula for the x-axis affects the y-axis, and the formula for the y-axis affects the x-axis. John
20. I have been using Filter > Distort > Equations to modify text onto a sine curve. First I rasterize the text, then apply Filter > Distort > Equations with the following formulae: x=x y= y+(h*a/2)*(b*sin(360*x/w/c)+(1-b)*cos(360*x/w/c)) This filter works as intended as a one-off, and whilst recording the macro, but If I then export the macro, and try to apply the macro later nothing happens. The history panel shows that it has been applied, but the image is unchanged. This happens whether I load the macro as a single macro, or if I add it to a library and load it from there. What seems to be happening is that when I record, I set the parameters a, b and c to 0.25, 1 and 1 respectively. The default in each case is 1. When I try to execute the macro, the parameters b and c seem to have been reset to zero which means that the macro is unusable, since dividing by c means dividing by zero. I can use the Macro Edit facility to apply valid values, but this should not be necessary. Text onto sine-cosine curve.afmacro John
21. I have been using Filter > Distort > Equations to modify text onto a sine curve. First I rasterize the text, then apply Filter > Distort > Equations with the following formulae: x=x y= y+(h*a/2)*(b*sin(360*x/w/c)+(1-b)*cos(360*x/w/c)) This filter works as intended as a one-off, and whilst recording the macro, but If I then export the macro, and try to apply the macro later nothing happens. The history panel shows that it has been applied, but the image is unchanged. This happens whether I load the macro as a single macro, or if I add it to a library and load it from there. Text onto sine-cosine curve.afmacro Anyone any ideas? John
22. The equations facility in Affinity is not well documented. There is limited support in some AP actions, but the Transform and Distort > Equations filter offers a wide range of functions. This tutorial focuses on using the trigonometrical functions, sine, tangent and arctangent. The argument to many trigonometrical functions is an angle. In mathematics this is usually expressed in radians. However, the Affinity functions expect their argument in degrees. Sines and cosines The argument expected is in degrees, and over 360 degrees, the value of the function varies between -1 and +1. The sine function starts at zero and rises to a maximum at 90 deg, then falls to zero at 180 deg, falling to a minimum of -1 at 270 deg before rising to zero at 360 deg. If we wish to map this cycle to the width of an image, then we can use sin(360*x/w). Typically we would want the amplitude of the cycle (the maximum and minimum) to be more than 1 and -1, so we add a scale factor, measured in pixels. For an amplitude of 100 pixels, we have 100*sin(360*x/w). This gives one cycle across the width of the image. If we want more than one cycle, we can add a multiplier in the argument, so for three cycles per width, we can use 100*sin(3*360*x/w). Note that I use 3*360 rather than 1080 since it preserves the standard 360 multiplier. As an example, here is a checkerboard with Filter > Distort > Equations: x=x y=y+100*sin(2*360*x/w) If we apply this to a real image, we get: This is varying the vertical position of a point along the x-axis. We could vary the vertical position of a point along the y-axis by using the equation: y=y+100*sin(2*360*y/h) For the checkerboard, this would give: And for the Severn Bridge we get: We could even combine them both with the formula: y=y+100*sin(2*360*x/w)*sin(2*360*y/h) to give: or, for a real image: I will be adding further examples using tangents and cotangents.
23. Hello there, in the tutorials equations are mentioned a few times, like in the Macros videos. But there is no general overview of the functions that I am aware of - for instance, relative to noise the video mentions that there are 4 different noise generators but I didn't find specific explanations as to possibilities using equations. Is there anything? I'd be glad to go through it...
24. I have been trying to devise a macro using the Distort > Equations, but it is hampered by a lack of documentation. I recall having once seen a list of supported functions, but I cannot now locate it. Neither Affinity help, this forum nor even Google have revealed this. I assume the same engine will apply to Transform using Equations. Can anyone please tell me where it could be found?
25. When using Apply Image equations, I am expecting to see a completely greyscale image when Da and Db are set to constant 0 in LAB space, however I see a heavy blue tint. See attached screenshot, left side should be greyscale instead.
×

• #### Affinity

×
• Create New...